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


IBCPSession::BCPExec (OLE DB)

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

Синтаксис

        HRESULT BCPExec(       DBROWCOUNT *pRowsCopied);

Замечания

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

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

Метод BCPExec — единственный метод массового копирования, который с большой вероятностью может ожидать выполнения в течение некоторого времени. Таким образом, это единственный метод массового копирования, который поддерживает асинхронный режим. Для использования асинхронного режима установите специфическое для поставщика свойство сеанса SSPROP_ASYNCH_BULKCOPY в значение VARIANT_TRUE перед вызовом метода 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
    Во время операции массового копирования произошли ошибки, и некоторые строки могли быть не скопированы. Количество ошибок все еще меньше минимально допустимого числа ошибок.

См. также

Основные понятия

Другие ресурсы