SqlBulkCopy Oluşturucular
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Aşırı Yüklemeler
| SqlBulkCopy(SqlConnection) |
belirtilen açık örneğini kullanarak sınıfının yeni bir örneğini SqlBulkCopySqlConnection başlatır. |
| SqlBulkCopy(String) |
Sağlanana göre yeni bir örneğini SqlConnection başlatır ve açar
|
| SqlBulkCopy(String, SqlBulkCopyOptions) |
Sağlanana göre yeni bir örneğini SqlConnection başlatır ve açar
|
| SqlBulkCopy(SqlConnection, SqlBulkCopyOptions, SqlTransaction) |
sağlanan mevcut açık örneğini kullanarak sınıfının yeni bir örneğini SqlBulkCopySqlConnection başlatır. Örnek,SqlBulkCopy
|
SqlBulkCopy(SqlConnection)
belirtilen açık örneğini kullanarak sınıfının yeni bir örneğini SqlBulkCopySqlConnection başlatır.
public:
SqlBulkCopy(Microsoft::Data::SqlClient::SqlConnection ^ connection);
public SqlBulkCopy (Microsoft.Data.SqlClient.SqlConnection connection);
new Microsoft.Data.SqlClient.SqlBulkCopy : Microsoft.Data.SqlClient.SqlConnection -> Microsoft.Data.SqlClient.SqlBulkCopy
Public Sub New (connection As SqlConnection)
Parametreler
- connection
- SqlConnection
Toplu kopyalama işlemini gerçekleştirmek için kullanılacak zaten açık SqlConnection olan örnek. Bağlantı dizeniz kullanılmıyorsa
Integrated Security = true , kullanıcı kimliğini ve parolayı bağlantı dizesinde metin olarak belirtmeye kıyasla daha güvenli bir şekilde geçirmek için kullanabilirsiniz SqlCredential .
Örnekler
Aşağıdaki konsol uygulamasında, zaten açık olan bir bağlantı kullanarak verilerin nasıl toplu olarak yükleneceği gösterilmiştir. Bu örnekte, SqlDataReaderSQL Server AdventureWorks veritabanındaki Production.Product tablosundaki verileri aynı veritabanındaki benzer bir tabloya kopyalamak için kullanılır. Bu örnek yalnızca tanıtım amaçlıdır. Üretim uygulamasındaki aynı veritabanındaki verileri bir tablodan diğerine taşımak için kullanamazsınız SqlBulkCopy .
Kaynak verilerin SQL Server'de bulunması gerekmediğini unutmayın; öğesine okunabilen veya bir öğesine yüklenebilen herhangi bir IDataReaderDataTableveri kaynağını kullanabilirsiniz.
Önemli
Bu örnek, Toplu Kopyalama Örneği Kurulumu'nda açıklandığı gibi iş tablolarını oluşturmadığınız sürece çalışmaz.
Bu kod, yalnızca SqlBulkCopy kullanımına yönelik söz dizimini göstermek için sağlanır. Kaynak ve hedef tablolar aynı SQL Server örneğindeyse, transact-SQL INSERT … SELECT deyimini kullanarak verileri kopyalamak daha kolay ve daha hızlıdır.
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();
// Open the destination connection. In the real world you would
// not use SqlBulkCopy to move data from one table to the other
// in the same database. This is for demonstration purposes only.
using (SqlConnection destinationConnection =
new SqlConnection(connectionString))
{
destinationConnection.Open();
// Set up the bulk copy object.
// Note that the column positions in the source
// data reader match the column positions in
// the destination table so there is no need to
// map columns.
using (SqlBulkCopy bulkCopy =
new SqlBulkCopy(destinationConnection))
{
bulkCopy.DestinationTableName =
"dbo.BulkCopyDemoMatchingColumns";
try
{
// Write from the source to the destination.
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;";
}
}
Açıklamalar
Örnek başlatıldığında bağlantı zaten açık SqlBulkCopy olduğundan, örnek kapatıldıktan sonra SqlBulkCopy bağlantı açık kalır.
connection Bağımsız değişken null ise, bir ArgumentNullException oluşturulur.
Şunlara uygulanır
SqlBulkCopy(String)
Sağlanana göre yeni bir örneğini SqlConnection başlatır ve açar
connectionString . Oluşturucu, sınıfının yeni bir örneğini SqlBulkCopy başlatmak için öğesini kullanırSqlConnection.
public:
SqlBulkCopy(System::String ^ connectionString);
public SqlBulkCopy (string connectionString);
new Microsoft.Data.SqlClient.SqlBulkCopy : string -> Microsoft.Data.SqlClient.SqlBulkCopy
Public Sub New (connectionString As String)
Parametreler
- connectionString
- String
Örnek tarafından SqlBulkCopy kullanılmak üzere açılacak bağlantıyı tanımlayan dize.
Bağlantı dizeniz kullanılmıyorsa
Integrated Security = true, kullanıcı kimliği ve SqlCredential parolasını bağlantı dizesinde metin olarak belirterek kullanıcı kimliği ve parolayı daha güvenli bir şekilde geçirmek için veya SqlBulkCopy(SqlConnection, SqlBulkCopyOptions, SqlTransaction) kullanabilirsinizSqlBulkCopy(SqlConnection).
Özel durumlar
Boş bir dize ise connectionString , bir ArgumentException oluşturulur.
Örnekler
Aşağıdaki konsol uygulaması, dize olarak belirtilen bir bağlantıyı kullanarak verileri toplu yükleme işlemini gösterir. Örnek kapatıldığında SqlBulkCopy bağlantı otomatik olarak kapatılır. Bu örnekte, kaynak veriler önce bir SQL Server tablosundan örneğe SqlDataReader okunur. Kaynak verilerin SQL Server üzerinde bulunması gerekmez; bir öğesine okunabilen veya bir öğesine yüklenebilen herhangi bir IDataReaderDataTableveri kaynağını kullanabilirsiniz.
Önemli
Bu örnek, Toplu Kopyalama Örneği Kurulumu'nda açıklandığı gibi iş tablolarını oluşturmadığınız sürece çalışmaz.
Bu kod, yalnızca SqlBulkCopy kullanımına yönelik söz dizimini göstermek için sağlanır. Kaynak ve hedef tablolar aynı SQL Server örneğindeyse, transact-SQL INSERT … SELECT deyimini kullanarak verileri kopyalamak daha kolay ve daha hızlıdır.
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 a connection string.
// In the real world you would not use SqlBulkCopy to move
// data from one table to the other in the same database.
using (SqlBulkCopy bulkCopy =
new SqlBulkCopy(connectionString))
{
bulkCopy.DestinationTableName =
"dbo.BulkCopyDemoMatchingColumns";
try
{
// Write from the source to the destination.
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;";
}
}
Açıklamalar
Bağlantı, toplu kopyalama işleminin sonunda otomatik olarak kapatılır.
connectionString null ise, bir ArgumentNullException oluşturulur. Boş bir dize ise connectionString , bir ArgumentException oluşturulur.
Şunlara uygulanır
SqlBulkCopy(String, SqlBulkCopyOptions)
Sağlanana göre yeni bir örneğini SqlConnection başlatır ve açar
connectionString . Oluşturucu, sınıfın yeni bir örneğini SqlBulkCopy başlatmak için bunu SqlConnection kullanır. Örnek,SqlConnection
copyOptions Parametre.
public:
SqlBulkCopy(System::String ^ connectionString, Microsoft::Data::SqlClient::SqlBulkCopyOptions copyOptions);
public SqlBulkCopy (string connectionString, Microsoft.Data.SqlClient.SqlBulkCopyOptions copyOptions);
new Microsoft.Data.SqlClient.SqlBulkCopy : string * Microsoft.Data.SqlClient.SqlBulkCopyOptions -> Microsoft.Data.SqlClient.SqlBulkCopy
Public Sub New (connectionString As String, copyOptions As SqlBulkCopyOptions)
Parametreler
- connectionString
- String
Örnek tarafından SqlBulkCopy kullanılmak üzere açılacak bağlantıyı tanımlayan dize. Bağlantı dizeniz kullanılmıyorsa
Integrated Security = true, kullanıcı kimliği ve SqlCredential parolasını bağlantı dizesinde metin olarak belirterek kullanıcı kimliği ve parolayı daha güvenli bir şekilde geçirmek için veya SqlBulkCopy(SqlConnection, SqlBulkCopyOptions, SqlTransaction) kullanabilirsinizSqlBulkCopy(SqlConnection).
- copyOptions
- SqlBulkCopyOptions
Hedef tabloya SqlBulkCopyOptions kopyalanan veri kaynağı satırlarını belirleyen numaralandırmadaki değerlerin birleşimi.
Örnekler
Aşağıdaki konsol uygulaması, dize olarak belirtilen bir bağlantıyı kullanarak toplu yükleme gerçekleştirmeyi gösterir. Hedef tabloyu yüklerken kaynak tablonun kimlik sütunundaki değeri kullanacak şekilde bir seçenek ayarlanır. Bu örnekte, kaynak veriler önce bir SQL Server tablosundan örneğe SqlDataReader okunur. Kaynak tablo ve hedef tablonun her birinde bir Identity sütunu bulunur. Varsayılan olarak, eklenen her satır için hedef tabloda Identity sütunu için yeni bir değer oluşturulur. Bu örnekte, bağlantı açıldığında toplu yükleme işlemini kaynak tablodan Kimlik değerlerini kullanmaya zorlayan bir seçenek ayarlanır. Seçeneğin toplu yüklemenin çalışma şeklini nasıl değiştirdiğini görmek için örneği dbo ile çalıştırın. BulkCopyDemoMatchingColumns tablosu boş. Tüm satırlar kaynaktan yüklenir. Ardından tabloyu boşaltmadan örneği yeniden çalıştırın. Özel durum oluşturulur ve kod konsola birincil anahtar kısıtlama ihlalleri nedeniyle satırların eklenmediğini bildiren bir ileti yazar.
Önemli
Bu örnek, Toplu Kopyalama Örneği Kurulumu'nda açıklandığı gibi iş tablolarını oluşturmadığınız sürece çalışmaz. Bu kod, yalnızca SqlBulkCopy kullanımına yönelik söz dizimini göstermek için sağlanır. Kaynak ve hedef tablolar aynı SQL Server örneğindeyse, transact-SQL INSERT … SELECT deyimini kullanarak verileri kopyalamak daha kolay ve daha hızlıdır.
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();
// Create the SqlBulkCopy object using a connection string
// and the KeepIdentity option.
// In the real world you would not use SqlBulkCopy to move
// data from one table to the other in the same database.
using (SqlBulkCopy bulkCopy =
new SqlBulkCopy(connectionString, SqlBulkCopyOptions.KeepIdentity))
{
bulkCopy.DestinationTableName =
"dbo.BulkCopyDemoMatchingColumns";
try
{
// Write from the source to the destination.
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;";
}
}
Açıklamalar
Konu başlığındaki tüm toplu kopyalama seçenekleri SqlBulkCopyOptions hakkında ayrıntılı bilgi edinebilirsiniz.
Şunlara uygulanır
SqlBulkCopy(SqlConnection, SqlBulkCopyOptions, SqlTransaction)
sağlanan mevcut açık örneğini kullanarak sınıfının yeni bir örneğini SqlBulkCopySqlConnection başlatır. Örnek,SqlBulkCopy
copyOptions Parametre. Null SqlTransaction olmayan bir değer sağlanırsa kopyalama işlemleri bu işlem içinde gerçekleştirilir.
public:
SqlBulkCopy(Microsoft::Data::SqlClient::SqlConnection ^ connection, Microsoft::Data::SqlClient::SqlBulkCopyOptions copyOptions, Microsoft::Data::SqlClient::SqlTransaction ^ externalTransaction);
public SqlBulkCopy (Microsoft.Data.SqlClient.SqlConnection connection, Microsoft.Data.SqlClient.SqlBulkCopyOptions copyOptions, Microsoft.Data.SqlClient.SqlTransaction externalTransaction);
new Microsoft.Data.SqlClient.SqlBulkCopy : Microsoft.Data.SqlClient.SqlConnection * Microsoft.Data.SqlClient.SqlBulkCopyOptions * Microsoft.Data.SqlClient.SqlTransaction -> Microsoft.Data.SqlClient.SqlBulkCopy
Public Sub New (connection As SqlConnection, copyOptions As SqlBulkCopyOptions, externalTransaction As SqlTransaction)
Parametreler
- connection
- SqlConnection
Toplu kopyalamayı gerçekleştirmek için kullanılacak zaten açık SqlConnection olan örnek. Bağlantı dizeniz kullanılmıyorsa
Integrated Security = true , kullanıcı kimliğini ve parolayı bağlantı dizesinde metin olarak belirtmeye kıyasla daha güvenli bir şekilde geçirmek için kullanabilirsiniz SqlCredential .
- copyOptions
- SqlBulkCopyOptions
Hedef tabloya SqlBulkCopyOptions kopyalanan veri kaynağı satırlarını belirleyen numaralandırmadaki değerlerin birleşimi.
- externalTransaction
- SqlTransaction
Toplu kopyalamanın gerçekleştirileceği mevcut SqlTransaction bir örnek.
Açıklamalar
Seçenekler arasında varsa UseInternalTransaction ve externalTransaction bağımsız değişken null değilse InvalidArgumentException oluşturulur.
İşlemde nasıl kullanılacağını SqlBulkCopy gösteren örnekler için bkz. İşlem ve Toplu Kopyalama İşlemleri.