Lingua

SqlBulkCopyColumnOrderHintCollection Classe

Definizione

Raccolta di SqlBulkCopyColumnOrderHint oggetti che ereditano da CollectionBase.

public ref class SqlBulkCopyColumnOrderHintCollection sealed : System::Collections::CollectionBase
public sealed class SqlBulkCopyColumnOrderHintCollection : System.Collections.CollectionBase
type SqlBulkCopyColumnOrderHintCollection = class
    inherit CollectionBase
Public NotInheritable Class SqlBulkCopyColumnOrderHintCollection
Inherits CollectionBase
Ereditarietà
SqlBulkCopyColumnOrderHintCollection

Esempio

L'esempio seguente esegue la copia bulk di dati da una tabella di origine nel database di esempio AdventureWorks a una tabella di destinazione nello stesso database. SqlBulkCopyColumnOrderHints vengono aggiunti all'oggetto SqlBulkCopyColumnOrderHintCollection dell'oggetto SqlBulkCopy per specificare gli hint per l'ordine per l'operazione di copia bulk.

Importante

Questo esempio non funzionerà, a meno che non siano state create le tabelle di lavoro come descritto in Creazione di esempi di copia di massa.

Il codice viene fornito solo per illustrare la sintassi relativa all'uso di SqlBulkCopy. Se le tabelle di origine e di destinazione si trovano nella stessa istanza di SQL Server, è più semplice e veloce usare un'istruzione Transact-SQL INSERT … SELECT per copiare i dati.

using System;
using System.Data;
using Microsoft.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoMatchingColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Set up the bulk copy object. 
            using (SqlBulkCopy bulkCopy =
                       new SqlBulkCopy(connectionString))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoMatchingColumns";

                // Specify the sort order for the ProductNumber column in 
                // the destination table.
                bulkCopy.ColumnOrderHints.Add("ProductNumber", SortOrder.Ascending);

                // Write from the source to the destination.
                try
                {
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }
            }

            // Perform a final count on the destination 
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static string GetConnectionString()
    // To avoid storing the sourceConnection string in your code, 
    // you can retrieve it from a configuration file. 
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Commenti

Gli hint per l'ordine delle colonne definiscono l'ordinamento della colonna nella tabella di destinazione.

Le prestazioni di SqlBulkCopy sono migliorate se i dati importati vengono ordinati in base all'indice cluster nella tabella, se presente. Se i dati vengono ordinati in un ordine diverso dall'ordine di una chiave di indice cluster o se nella tabella non è presente alcun indice cluster, l'hint per l'ordine viene ignorato.

Gli hint per l'ordine possono essere specificati per un numero qualsiasi di colonne nella tabella di destinazione. Per impostazione predefinita, l'operazione di inserimento bulk presuppone che i dati non siano ordinati se non vengono forniti hint.

I nomi di colonna specificati devono corrispondere a nomi di colonna validi nella tabella di destinazione. L'ordine in cui è possibile specificare gli hint è arbitrario. Non è possibile specificare un nome di colonna singola più di una volta.

Se la raccolta non è vuota, gli hint per l'ordine ColumnMappings possono essere forniti solo per le colonne di destinazione valide mappate.

Se viene specificato un SortOrder valore non specificato, verrà generata un'eccezione ArgumentException .

Costruttori

Nome Descrizione
SqlBulkCopyColumnOrderHintCollection()

Raccolta di SqlBulkCopyColumnOrderHint oggetti che ereditano da CollectionBase.

Proprietà

Nome Descrizione
Item[Int32]

Ottiene l'oggetto SqlBulkCopyColumnOrderHint in corrispondenza dell'indice specificato.

Metodi

Nome Descrizione
Add(SqlBulkCopyColumnOrderHint)

Aggiunge l'hint per l'ordine specificato all'oggetto SqlBulkCopyColumnOrderHintCollection.

Add(String, SortOrder)

Crea un nuovo SqlBulkCopyColumnOrderHint oggetto e lo aggiunge alla raccolta.

Clear()

Cancella il contenuto dell'insieme.

Contains(SqlBulkCopyColumnOrderHint)

Ottiene un valore che indica se un oggetto specificato SqlBulkCopyColumnOrderHint esiste nell'insieme.

CopyTo(SqlBulkCopyColumnOrderHint[], Int32)

Copia gli elementi di in SqlBulkCopyColumnOrderHintCollection una matrice di SqlBulkCopyColumnOrderHint elementi, a partire da un indice specifico.

IndexOf(SqlBulkCopyColumnOrderHint)

Ottiene l'indice dell'oggetto specificato SqlBulkCopyColumnOrderHint .

Insert(Int32, SqlBulkCopyColumnOrderHint)

Inserire un nuovo SqlBulkCopyColumnOrderHint oggetto in corrispondenza dell'indice specificato.

Remove(SqlBulkCopyColumnOrderHint)

Rimuove l'elemento specificato SqlBulkCopyColumnOrderHint da SqlBulkCopyColumnOrderHintCollection.

RemoveAt(Int32)

Rimuove l'hint dell'ordine di colonna in corrispondenza dell'indice specificato dalla raccolta.

Si applica a