IBCPSession::BCPExec (OLE DB)
Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)
Выполняет операцию массового копирования.
Синтаксис
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)
Выполнение операций массового копирования