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


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

Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform 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)
Выполнение операций массового копирования