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
Во время операции массового копирования произошли ошибки, и некоторые строки могли быть не скопированы. Количество ошибок все еще меньше минимально допустимого числа ошибок.
См. также