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


IBCPSession::BCPExec (OLE DB)

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

Синтаксис

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)