SqlBulkCopyColumnOrderHintCollection Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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. |