IBCPSession::BCPExec (поставщик OLE DB собственного клиента)

Применимо к:SQL ServerAzure SQL DatabaseAzure Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Внимание

Собственный клиент SQL Server (часто сокращенный SNAC) был удален из SQL Server 2022 (16.x) и SQL Server Management Studio 19 (SSMS). Поставщик OLE DB собственного клиента SQL Server (SQLNCLI или SQLNCLI11) и устаревший поставщик Microsoft OLE DB для SQL Server (SQLOLEDB) не рекомендуется для новой разработки. Перейдите на новый драйвер Microsoft OLE DB (MSOLEDBSQL) для SQL Server .

Выполняет операцию массового копирования.

Синтаксис

  
HRESULT BCPExec(   
      DBROWCOUNT *pRowsCopied);  

Замечания

Метод BCPExec копирует данные из пользовательского файла в таблицу базы данных или наоборот, в зависимости от значения параметра eDirection, используемого в методе IBCPSession::BCPInit.

Перед вызовом BCPExecвызовите метод BCPInit , передав ему допустимое имя файла пользователя. Несоблюдение этого правила приведет к ошибке. Единственное исключение — использование запроса для операции массового копирования из базы данных. В этом случае указывается имя таблицы NULL в методе BCPInit , а затем задается запрос, использующий параметр BCP_OPTION_HINTS.

Метод BCPExec — единственный метод массового копирования, который с большой вероятностью может ожидать выполнения в течение любого периода времени. Таким образом, это единственный метод массового копирования, который поддерживает асинхронный режим. Для использования асинхронного режима задайте значение VARIANT_TRUE для свойства сеанса поставщика SSPROP_ASYNCH_BULKCOPY перед вызовом метода BCPExec . Это свойство доступно в наборе свойств DBPROPSET_SQLSERVERSESSION. Чтобы проверить завершение операции, вызовите метод BCPExec с теми же параметрами. Если массовое копирование еще не завершено, метод BCPExec возвращает DB_S_ASYNCHRONOUS. Он также возвращает в аргументе pRowsCopied состояние счетчика строк, переданных на сервер или полученных от него. Строки, отправленные на сервер, не фиксируются до тех пор, пока не будет достигнут конец пакета.

Аргументы

pRowsCopied[out]
Указатель на значение типа DWORD. Метод BCPExec записывает в значение DWORD количество успешно скопированных строк. Если для аргумента pRowsCopied задано значение NULL, то он пропускается методом BCPExec .

Значения кода возврата

S_OK
Метод выполнен успешно.

E_FAIL
Произошла ошибка, связанная с поставщиком. Подробные сведения можно получить при помощи интерфейса ISQLServerErrorInfo.

E_UNEXPECTED
Непредвиденный вызов метода. Например, перед вызовом этого метода не был вызван метод BCPInit . Также возникает, если операция была прервана с использованием параметра BCP_OPTION_ABORT, а затем был вызван метод BCPExec .

E_OUTOFMEMORY
Недостаточно памяти.

DB_S_ENDOFROWSET
Операция массового копирования завершена, и вся передача всех данных выполнена.

DB_S_ASYNCHRONOUS
Текущий пакет строк скопирован. Вновь вызовите метод BCPExec , чтобы передать следующий пакет.

DB_S_ERRORSOCCURRED
Во время операции массового копирования произошли ошибки, и некоторые строки могли быть не скопированы. Количество ошибок все еще меньше минимально допустимого числа ошибок.

См. также

IBCPSession (OLE DB)
Выполнение операций массового копирования