SqlBulkCopyColumnOrderHintCollection Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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. |