Udostępnij za pośrednictwem


SqlBulkCopyColumnOrderHintCollection Klasa

Definicja

SqlBulkCopyColumnOrderHint Kolekcja obiektów dziedziczy z CollectionBaseklasy .

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
Dziedziczenie
SqlBulkCopyColumnOrderHintCollection

Przykłady

Poniższy przykład zbiorczo kopiuje dane z tabeli źródłowej w przykładowej bazie danych AdventureWorks do tabeli docelowej w tej samej bazie danych. SqlBulkCopyColumnOrderHints są dodawane do obiektu w SqlBulkCopyColumnOrderHintCollectionSqlBulkCopy celu określenia wskazówek kolejności dla operacji kopiowania zbiorczego.

Ważne

Ten przykład nie zostanie uruchomiony, chyba że tabele robocze zostały utworzone zgodnie z opisem w temacie Konfiguracja przykładu kopiowania zbiorczego. Ten kod jest dostarczany w celu zademonstrowania składni tylko przy użyciu narzędzia SqlBulkCopy . Jeśli tabele źródłowe i docelowe znajdują się w tym samym wystąpieniu SQL Server, łatwiej i szybciej używać instrukcji Języka Transact-SQL INSERT … SELECT do kopiowania danych.

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;";
    }
}

Uwagi

Wskazówki dotyczące kolejności kolumn definiują kolejność sortowania kolumny w tabeli docelowej.

Wydajność narzędzia SqlBulkCopy jest lepsza, jeśli importowane dane są sortowane zgodnie z indeksem klastrowanym w tabeli, jeśli istnieją. Jeśli dane są sortowane w kolejności, która różni się od kolejności klastrowanego klucza indeksu lub jeśli nie ma indeksu klastrowanego w tabeli, wskazówka zamówienia jest ignorowana.

Wskazówki dotyczące kolejności można określić dla dowolnej liczby kolumn w tabeli docelowej. Domyślnie operacja wstawiania zbiorczego zakłada, że dane są nieuporządkowane, jeśli nie podano żadnych wskazówek.

Podane nazwy kolumn muszą być prawidłowymi nazwami kolumn w tabeli docelowej. Kolejność, w której można określić wskazówki, jest dowolna. Nie można określić nazwy jednej kolumny więcej niż raz.

ColumnMappings Jeśli kolekcja nie jest pusta, wskazówki dotyczące kolejności można podać tylko dla prawidłowych kolumn docelowych, które zostały zamapowane.

SortOrder Jeśli zostanie podany nieokreślony, ArgumentException zostanie zgłoszony.

Konstruktory

SqlBulkCopyColumnOrderHintCollection()

SqlBulkCopyColumnOrderHint Kolekcja obiektów dziedziczy z CollectionBaseklasy .

Właściwości

Item[Int32]

SqlBulkCopyColumnOrderHint Pobiera obiekt w określonym indeksie.

Metody

Add(SqlBulkCopyColumnOrderHint)

Dodaje określoną wskazówkę zamówienia do elementu SqlBulkCopyColumnOrderHintCollection.

Add(String, SortOrder)

Tworzy nowy SqlBulkCopyColumnOrderHint element i dodaje go do kolekcji.

Clear()

SqlBulkCopyColumnOrderHint Kolekcja obiektów dziedziczy z CollectionBaseklasy .

Contains(SqlBulkCopyColumnOrderHint)

Pobiera wartość wskazującą, czy określony SqlBulkCopyColumnOrderHint obiekt istnieje w kolekcji.

CopyTo(SqlBulkCopyColumnOrderHint[], Int32)

Kopiuje elementy SqlBulkCopyColumnOrderHintCollection do tablicy SqlBulkCopyColumnOrderHint elementów, zaczynając od określonego indeksu.

IndexOf(SqlBulkCopyColumnOrderHint)

Pobiera indeks określonego SqlBulkCopyColumnOrderHint obiektu.

Insert(Int32, SqlBulkCopyColumnOrderHint)

Wstaw nowy SqlBulkCopyColumnOrderHint w określonym indeksie.

Remove(SqlBulkCopyColumnOrderHint)

Usuwa określony SqlBulkCopyColumnOrderHint element z elementu SqlBulkCopyColumnOrderHintCollection.

RemoveAt(Int32)

SqlBulkCopyColumnOrderHint Kolekcja obiektów dziedziczy z CollectionBaseklasy .

Dotyczy