SqlBulkCopyColumnOrderHint Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menentukan urutan pengurutan untuk kolom dalam SqlBulkCopy tabel tujuan instans, sesuai dengan indeks berkluster pada tabel.
public ref class SqlBulkCopyColumnOrderHint sealed
public sealed class SqlBulkCopyColumnOrderHint
type SqlBulkCopyColumnOrderHint = class
Public NotInheritable Class SqlBulkCopyColumnOrderHint
- Warisan
-
SqlBulkCopyColumnOrderHint
Contoh
Contoh berikut menyalin data secara massal dari tabel sumber dalam database sampel AdventureWorks ke tabel tujuan dalam database yang sama. Objek SqlBulkCopyColumnOrderHint digunakan untuk menentukan urutan pengurutan untuk kolom tujuan ProductNumber.
Penting
Sampel ini tidak akan berjalan kecuali Anda telah membuat tabel kerja seperti yang dijelaskan dalam Penyiapan Contoh Salinan Massal.
Kode ini disediakan untuk mendemonstrasikan sintaks untuk menggunakan SqlBulkCopy saja. Jika tabel sumber dan tujuan berada dalam instans SQL Server yang sama, lebih mudah dan lebih cepat untuk menggunakan pernyataan Transact-SQL INSERT … SELECT untuk menyalin data.
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";
// Setup an order hint for the ProductNumber column.
SqlBulkCopyColumnOrderHint hintNumber =
new SqlBulkCopyColumnOrderHint("ProductNumber", SortOrder.Ascending);
bulkCopy.ColumnOrderHints.Add(hintNumber);
// 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;";
}
}
Keterangan
Petunjuk urutan kolom menentukan susunan urutan kolom dalam tabel tujuan.
Performa SqlBulkCopy ditingkatkan jika data yang diimpor diurutkan sesuai dengan indeks berkluster pada tabel, jika ada. Jika data diurutkan dalam urutan yang berbeda dari urutan kunci indeks berkluster atau jika tidak ada indeks berkluster pada tabel, petunjuk urutan diabaikan.
Petunjuk pesanan dapat ditentukan untuk sejumlah kolom dalam tabel tujuan. Secara default, operasi penyisipan massal mengasumsikan data tidak diurutkan jika tidak ada petunjuk yang disediakan.
Nama kolom yang disediakan harus berupa nama kolom yang valid dalam tabel tujuan. Urutan di mana petunjuk dapat ditentukan bersifat arbitrer. Satu nama kolom tidak dapat ditentukan lebih dari sekali.
ColumnMappings Jika koleksi tidak kosong, petunjuk pesanan hanya dapat disediakan untuk kolom tujuan yang valid yang telah dipetakan.
SortOrder Jika dari Yang Tidak Ditentukan diberikan, ArgumentException akan dilemparkan.
Konstruktor
| SqlBulkCopyColumnOrderHint(String, SortOrder) |
Membuat petunjuk urutan kolom baru untuk kolom tujuan yang ditentukan. |
Properti
| Column |
Nama kolom tujuan dalam tabel tujuan tempat petunjuk disediakan. |
| SortOrder |
Susunan urutan kolom tujuan dalam tabel tujuan. |