SqlBulkCopyColumnOrderHintCollection Classe

Definizione

Raccolta di oggetti SqlBulkCopyColumnOrderHint che ereditano dall'oggetto 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 SqlBulkCopyColumnOrderHintCollectionSqlBulkCopy per specificare gli hint di ordine per l'operazione di copia bulk.

Importante

Questo esempio non verrà eseguito a meno che non siano state create le tabelle di lavoro, come descritto in Installazione dell'esempio di copia bulk. 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 non è presente alcun indice cluster nella tabella, l'hint per l'ordine viene ignorato.

È possibile specificare hint di ordine per qualsiasi numero 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 più di una volta un nome di colonna singola.

Se la raccolta non è vuota, è possibile specificare hint per l'ordine ColumnMappings solo per le colonne di destinazione valide di cui è stato eseguito il mapping.

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

Costruttori

SqlBulkCopyColumnOrderHintCollection()

Raccolta di oggetti SqlBulkCopyColumnOrderHint che ereditano dall'oggetto CollectionBase.

Proprietà

Item[Int32]

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

Metodi

Add(SqlBulkCopyColumnOrderHint)

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

Add(String, SortOrder)

Crea una nuova classe SqlBulkCopyColumnOrderHint e la aggiunge alla raccolta.

Clear()

Raccolta di oggetti SqlBulkCopyColumnOrderHint che ereditano dall'oggetto CollectionBase.

Contains(SqlBulkCopyColumnOrderHint)

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

CopyTo(SqlBulkCopyColumnOrderHint[], Int32)

Copia gli elementi dell'insieme SqlBulkCopyColumnOrderHintCollection in una matrice di elementi SqlBulkCopyColumnOrderHint, cominciando da un particolare indice.

IndexOf(SqlBulkCopyColumnOrderHint)

Ottiene l'indice dell'oggetto SqlBulkCopyColumnOrderHint specificato.

Insert(Int32, SqlBulkCopyColumnOrderHint)

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

Remove(SqlBulkCopyColumnOrderHint)

Rimuove l'elemento SqlBulkCopyColumnOrderHint specificato dall'oggetto SqlBulkCopyColumnOrderHintCollection.

RemoveAt(Int32)

Raccolta di oggetti SqlBulkCopyColumnOrderHint che ereditano dall'oggetto CollectionBase.

Si applica a