Поделиться через


SqlBulkCopy Конструкторы

Определение

Инициализирует новый экземпляр класса SqlBulkCopy.

Перегрузки

SqlBulkCopy(SqlConnection)

Инициализирует новый экземпляр класса SqlBulkCopy, используя указанный открытый экземпляр SqlConnection.

SqlBulkCopy(String)

Инициализирует и открывает новый экземпляр класса SqlConnection в зависимости от предоставленного параметра connectionString. Конструктор использует SqlConnection для инициализации нового экземпляра класса SqlBulkCopy.

SqlBulkCopy(String, SqlBulkCopyOptions)

Инициализирует и открывает новый экземпляр классаSqlConnection с использованием заданной connectionString. Этот конструктор использует SqlConnection для инициализации нового экземпляра класса SqlBulkCopy. Экземпляр SqlConnection ведет себя соответственно установкам, заданным в параметре copyOptions.

SqlBulkCopy(SqlConnection, SqlBulkCopyOptions, SqlTransaction)

Инициализирует новый экземпляр класса SqlBulkCopy, используя заданный открытый экземпляр класса SqlConnection. Экземпляр SqlBulkCopy ведет себя соответственно установкам, заданным в параметре copyOptions. Если предоставлено ненулевое значение SqlTransaction, операция копирования будет выполнена в этой транзакции.

SqlBulkCopy(SqlConnection)

Инициализирует новый экземпляр класса SqlBulkCopy, используя указанный открытый экземпляр SqlConnection.

public:
 SqlBulkCopy(System::Data::SqlClient::SqlConnection ^ connection);
public SqlBulkCopy (System.Data.SqlClient.SqlConnection connection);
new System.Data.SqlClient.SqlBulkCopy : System.Data.SqlClient.SqlConnection -> System.Data.SqlClient.SqlBulkCopy
Public Sub New (connection As SqlConnection)

Параметры

connection
SqlConnection

Уже открытый экземпляр SqlConnection, который будет использоваться для выполнения массового копирования. Если строка подключения не использует Integrated Security = true, можно использовать SqlCredential для более безопасной передачи идентификатора пользователя и пароля, чем при указании идентификатора пользователя и пароля в строке подключения в виде текста.

Примеры

В следующем консольном приложении показано, как выполнить массовую загрузку данных с помощью уже открытого подключения. В этом примере объект SqlDataReader используется, чтобы скопировать данные из таблицы Production.Product в базе данных SQL Server AdventureWorks в такую же таблицу в этой же базе данных. Пример приводится исключительно для демонстрации. Вы не будете использовать для SqlBulkCopy перемещения данных из одной таблицы в другую в той же базе данных в рабочем приложении. Обратите внимание, что исходные данные не обязательно должны находиться на SQL Server; можно использовать любой IDataReader источник данных, который можно считать в или загрузить в DataTable.

Важно!

Этот пример не будет выполняться, если вы не создали рабочие таблицы, как описано в разделе Пример установки массового копирования. Этот код предназначен только для демонстрации синтаксиса использования SqlBulkCopy. Если исходная и целевая таблицы находятся в одном экземпляре SQL Server, проще и быстрее использовать инструкцию Transact-SQL INSERT ... SELECT для копирования данных.

using System.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;";
    }
}
Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoMatchingColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = 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 destinationConnection As SqlConnection = _
                New SqlConnection(connectionString)
                destinationConnection.Open()

                ' Set up the bulk copy object. 
                ' 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 bulkCopy As SqlBulkCopy = _
                  New SqlBulkCopy(destinationConnection)
                    bulkCopy.DestinationTableName = _
                    "dbo.BulkCopyDemoMatchingColumns"

                    Try
                        ' Write from the source to the destination.
                        bulkCopy.WriteToServer(reader)

                    Catch ex As Exception
                        Console.WriteLine(ex.Message)

                    Finally
                        ' Close the SqlDataReader. The SqlBulkCopy
                        ' object is automatically closed at the end
                        ' of the Using block.
                        reader.Close()
                    End Try
                End Using

                ' Perform a final count on the destination table
                ' to see how many rows were added.
                Dim countEnd As Long = _
                    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()
            End Using
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' 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;"
    End Function
End Module

Комментарии

Так как подключение уже открыто при инициализации SqlBulkCopy экземпляра, соединение остается открытым после закрытия экземпляра SqlBulkCopy .

connection Если аргумент имеет значение NULL, ArgumentNullException создается исключение .

См. также раздел

Применяется к

SqlBulkCopy(String)

Инициализирует и открывает новый экземпляр класса SqlConnection в зависимости от предоставленного параметра connectionString. Конструктор использует SqlConnection для инициализации нового экземпляра класса SqlBulkCopy.

public:
 SqlBulkCopy(System::String ^ connectionString);
public SqlBulkCopy (string connectionString);
new System.Data.SqlClient.SqlBulkCopy : string -> System.Data.SqlClient.SqlBulkCopy
Public Sub New (connectionString As String)

Параметры

connectionString
String

Строка, определяющая подключение, которое будет открыто для использования экземпляром SqlBulkCopy. Если строка подключения не использует Integrated Security = true, можно использовать SqlBulkCopy(SqlConnection), SqlBulkCopy(SqlConnection, SqlBulkCopyOptions, SqlTransaction) или SqlCredential для более безопасной передачи идентификатора пользователя и пароля, чем при их указании в строке подключения в виде текста.

Примеры

В следующем консольном приложении показано, как выполнить массовую загрузку данных с помощью подключения, указанного в виде строки. Соединение автоматически закрывается при закрытии экземпляра SqlBulkCopy .

В этом примере исходные данные сначала считываются из SQL Server таблицы в SqlDataReader экземпляр . Исходные данные не обязательно должны находиться на SQL Server; можно использовать любой IDataReader источник данных, который можно считать в или загрузить в DataTable.

Важно!

Этот пример не будет выполняться, если вы не создали рабочие таблицы, как описано в разделе Пример установки массового копирования. Этот код предназначен только для демонстрации синтаксиса использования SqlBulkCopy. Если исходная и целевая таблицы находятся в одном экземпляре SQL Server, проще и быстрее использовать инструкцию Transact-SQL INSERT ... SELECT для копирования данных.

using System.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;";
    }
}
Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoMatchingColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = 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 bulkCopy As SqlBulkCopy = New SqlBulkCopy(connectionString)
                bulkCopy.DestinationTableName = _
                "dbo.BulkCopyDemoMatchingColumns"

                Try
                    ' Write from the source to the destination.
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                Finally
                    ' Close the SqlDataReader. The SqlBulkCopy
                    ' object is automatically closed at the end
                    ' of the Using block.
                    reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                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()
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' 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;"
    End Function
End Module

Комментарии

Подключение автоматически закрывается в конце операции массового копирования.

Если connectionString имеет значение NULL, возникает исключение ArgumentNullException . Если connectionString является пустой строкой ArgumentException , возникает исключение .

См. также раздел

Применяется к

SqlBulkCopy(String, SqlBulkCopyOptions)

Инициализирует и открывает новый экземпляр классаSqlConnection с использованием заданной connectionString. Этот конструктор использует SqlConnection для инициализации нового экземпляра класса SqlBulkCopy. Экземпляр SqlConnection ведет себя соответственно установкам, заданным в параметре copyOptions.

public:
 SqlBulkCopy(System::String ^ connectionString, System::Data::SqlClient::SqlBulkCopyOptions copyOptions);
public SqlBulkCopy (string connectionString, System.Data.SqlClient.SqlBulkCopyOptions copyOptions);
new System.Data.SqlClient.SqlBulkCopy : string * System.Data.SqlClient.SqlBulkCopyOptions -> System.Data.SqlClient.SqlBulkCopy
Public Sub New (connectionString As String, copyOptions As SqlBulkCopyOptions)

Параметры

connectionString
String

Строка, определяющая подключение, которое будет открыто для использования экземпляром SqlBulkCopy. Если строка подключения не использует Integrated Security = true, можно использовать SqlBulkCopy(SqlConnection), SqlBulkCopy(SqlConnection, SqlBulkCopyOptions, SqlTransaction) или SqlCredential для более безопасной передачи идентификатора пользователя и пароля, чем при их указании в строке подключения в виде текста.

copyOptions
SqlBulkCopyOptions

Комбинация значений из перечисления SqlBulkCopyOptions, определяющая, какие строки из источника данных будут скопированы в конечную таблицу.

Примеры

В следующем консольном приложении показано, как выполнить массовую загрузку с помощью подключения, указанного в виде строки. Параметр использует значение в столбце идентификаторов исходной таблицы при загрузке целевой таблицы. В этом примере исходные данные сначала считываются из SQL Server таблицы в SqlDataReader экземпляр . Исходная и целевая таблицы содержат столбец Идентификатор. По умолчанию для каждой добавленной строки в целевой таблице создается новое значение столбца Identity . В этом примере при открытии подключения задается параметр , который заставляет процесс массовой загрузки использовать значения идентификаторов из исходной таблицы. Чтобы увидеть, как параметр изменяет способ работы массовой загрузки, запустите пример с помощью dbo. Таблица BulkCopyDemoMatchingColumns пуста. Все строки загружаются из источника. Затем снова запустите пример, не очищая таблицу. Возникает исключение, и код записывает в консоль сообщение о том, что строки не были добавлены из-за нарушений ограничений первичного ключа.

Важно!

Этот пример не будет выполняться, если вы не создали рабочие таблицы, как описано в разделе Пример установки массового копирования. Этот код предназначен только для демонстрации синтаксиса использования SqlBulkCopy. Если исходная и целевая таблицы находятся в одном экземпляре SQL Server, проще и быстрее использовать инструкцию Transact-SQL INSERT ... SELECT для копирования данных.

using System.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;";
    }
}
Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoMatchingColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = 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 bulkCopy As SqlBulkCopy = _
              New SqlBulkCopy(connectionString, SqlBulkCopyOptions.KeepIdentity)
                bulkCopy.DestinationTableName = "dbo.BulkCopyDemoMatchingColumns"

                Try
                    ' Write from the source to the destination.
                    bulkCopy.WriteToServer(reader)

                Catch ex As Exception
                    Console.WriteLine(ex.Message)

                    Finally
                        ' Close the SqlDataReader. The SqlBulkCopy
                        ' object is automatically closed at the end
                        ' of the Using block.
                        reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                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()
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' 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;"
    End Function
End Module

Комментарии

Подробные сведения обо всех вариантах массового копирования см. в SqlBulkCopyOptions этой статье.

См. также раздел

Применяется к

SqlBulkCopy(SqlConnection, SqlBulkCopyOptions, SqlTransaction)

Инициализирует новый экземпляр класса SqlBulkCopy, используя заданный открытый экземпляр класса SqlConnection. Экземпляр SqlBulkCopy ведет себя соответственно установкам, заданным в параметре copyOptions. Если предоставлено ненулевое значение SqlTransaction, операция копирования будет выполнена в этой транзакции.

public:
 SqlBulkCopy(System::Data::SqlClient::SqlConnection ^ connection, System::Data::SqlClient::SqlBulkCopyOptions copyOptions, System::Data::SqlClient::SqlTransaction ^ externalTransaction);
public SqlBulkCopy (System.Data.SqlClient.SqlConnection connection, System.Data.SqlClient.SqlBulkCopyOptions copyOptions, System.Data.SqlClient.SqlTransaction externalTransaction);
new System.Data.SqlClient.SqlBulkCopy : System.Data.SqlClient.SqlConnection * System.Data.SqlClient.SqlBulkCopyOptions * System.Data.SqlClient.SqlTransaction -> System.Data.SqlClient.SqlBulkCopy
Public Sub New (connection As SqlConnection, copyOptions As SqlBulkCopyOptions, externalTransaction As SqlTransaction)

Параметры

connection
SqlConnection

Уже открытый экземпляр SqlConnection, который будет использоваться для выполнения массового копирования. Если строка подключения не использует Integrated Security = true, можно использовать SqlCredential для более безопасной передачи идентификатора пользователя и пароля, чем при указании идентификатора пользователя и пароля в строке подключения в виде текста.

copyOptions
SqlBulkCopyOptions

Комбинация значений из перечисления SqlBulkCopyOptions, определяющая, какие строки из источника данных будут скопированы в конечную таблицу.

externalTransaction
SqlTransaction

Существующий экземпляр SqlTransaction, для которого будет выполняться массовое копирование.

Комментарии

Если параметры включают UseInternalTransaction и externalTransaction аргумент не имеет значения NULL, возникает исключение InvalidArgumentException .

Примеры SqlBulkCopy использования в транзакции см. в разделе Операции транзакций и массового копирования.

См. также раздел

Применяется к