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


IBCPSession::BCPControl (поставщик 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 BCPControl(   
      int eOption,  
      void *iValue);  

Замечания

Метод BCPControl задает различные параметры управления для операций массового копирования, в том числе количество ошибок, допустимых перед отменой массового копирования, номера первой и последней строк, копируемых из файла данных, и размер пакетов.

Этот метод также используется для указания инструкции SELECT для использования при массовом копировании данных из SQL Server. Можно присвоить аргументу eOption значение BCP_OPTION_HINTS, а аргументу iValue указатель на строку знаков в Юникоде, содержащую инструкцию SELECT.

Возможные значения параметра eOption .

Вариант Описание
BCP_OPTION_ABORT Останавливает текущую операцию массового копирования. Можно вызвать метод BCPControl с аргументом eOption , имеющим значение BCP_OPTION_ABORT, из другого потока, чтобы остановить текущую операцию массового копирования. Аргумент iValue не учитывается.
BCP_OPTION_BATCH Количество строк на пакет. Значение по умолчанию — 0, указывающее все строки в таблице при извлечении данных или все строки в файле данных пользователя при копировании данных в SQL Server. При значении меньше 1 параметр BCP_OPTION_BATCH принимает значение по умолчанию.
BCP_OPTION_DELAYREADFMT Логическое значение. Если ему задано значение true, то IBCPSession::BCPReadFmt будет читаться при выполнении. Если имеет значение false (по умолчанию), IBCPSession::BCPReadFmt немедленно считывает файл форматирования. Если BCP_OPTION_DELAYREADFMT имеет значение true, то при вызове IBCPSession::BCPColumns или IBCPSession::BCPColFmt возникнет ошибка последовательности.

Также ошибка последовательности возникнет при вызове IBCPSession::BCPControl(BCPDELAYREADFMT, (void *)FALSE)) после вызова IBCPSession::BCPControl(BCPDELAYREADFMT, (void *)TRUE) и IBCPSession::BCPWriteFmt.

Дополнительные сведения см. в разделе Обнаружение метаданных.
BCP_OPTION_FILECP Аргумент iValue содержит номер кодовой страницы для файла данных. Можно указать номер кодовой страницы, такой как 1252 или 850, или одно из следующих значений.

BCP_FILECP_ACP: данные в файле находится на кодовой странице Клиента в Microsoft Windows.

BCP_FILECP_OEMCP: данные в файле находятся в кодовой странице изготовителя оборудования (OEM) клиента (по умолчанию).

BCP_FILECP_RAW: данные в файле находится на кодовой странице SQL Server.
BCP_OPTION_FILEFMT Номер версии для формата файла данных. Это может быть 80 (SQL Server 2000 (8.x)), 90 (SQL Server 2005 (9.x)), 100 (SQL Server 2008 (10.0.x) или SQL Server 2008 R2 (10.50.x)), 110 (SQL Server 2012 (11.x)) или 120 (SQL Server 2014 (12.x). 120 используется по умолчанию. Это может оказаться полезным при экспорте или импорте данных в форматах, которые поддерживались прежними версиями сервера. Например, чтобы импортировать данные из текстового столбца на сервере SQL Server 2000 (8.x) в столбец varchar(max) в SQL Server 2005 (9.x) или более поздней версии сервера, следует указать 80. Аналогичным образом, если вы указываете 80 при экспорте данных из столбца varchar(max ), он будет сохранен так же, как текстовые столбцы сохраняются в формате SQL Server 2000 (8.x) и могут быть импортированы в текстовый столбец сервера SQL Server 2000 (8.x).
BCP_OPTION_FIRST Первая строка данных копируемого файла или таблицы. Значение по умолчанию равно 1. Если задать для этого параметра значение меньше 1, то будет установлено значение по умолчанию.
BCP_OPTION_FIRSTEX В операциях bcp out задает первую строку таблицы базы данных для копирования в файл данных.

В операциях bcp in задает первую строку файла данных для копирования в таблицу базы данных.

Параметр iValue должен представлять адрес 64-разрядного целого числа со знаком, содержащего значение. Максимальное значение, которое можно передать в BCPFIRSTEX, составляет 2^63-1.
BCP_OPTION_FMTXML Используется, чтобы указать, что созданный файл форматирования должен быть в формате XML. Отключен по умолчанию, и по умолчанию файлы форматирования сохраняются как текстовые файлы. XML-файл форматирования обеспечивает более высокую гибкость, но связан с некоторыми дополнительными ограничениями. Например, нельзя указать для поля одновременно префикс и признак конца, что было возможно в старых файлах форматирования.

Примечание. XML-файлы форматирования поддерживаются только при установке средств SQL Server вместе с собственным клиентом SQL Server.
BCP_OPTION_HINTS Аргумент iValue содержит указатель на расширенный символ. Адресуемая строка задает подсказки для обработки массового копирования SQL Server или инструкцию Transact-SQL , которая возвращает результирующий набор. Если задана инструкция Transact-SQL, которая возвращает несколько результирующих наборов, все результирующие наборы после первого пропускаются.
BCP_OPTION_KEEPIDENTITY Если аргумент iValue имеет значение TRUE, этот параметр указывает, что методы массового копирования вставляют значения данных, предоставленные для столбцов SQL Server, определенных с ограничением удостоверения. Входной файл должен содержать значения для столбцов идентификаторов. Если эти значения не заданы, то для вставляемых строк создаются новые значения идентификаторов. Данные в файле, предназначенные для столбцов идентификаторов, не учитываются.
BCP_OPTION_KEEPNULLS Указывает, будут ли пустые значения данных в файле преобразованы в значения NULL в таблице SQL Server. Если аргумент iValue имеет значение TRUE, пустые значения преобразуются в NULL в таблице SQL Server. Значение по умолчанию предназначено для преобразования пустых значений в значение по умолчанию для столбца в таблице SQL Server, если по умолчанию существует.
BCP_OPTION_LAST Последняя копируемая строка. По умолчанию копируются все строки. При значении менее 1 этот параметр сбрасывается в значение по умолчанию.
BCP_OPTION_LASTEX В операциях bcp out задает последнюю строку таблицы базы данных для копирования в файл данных.

В операциях bcp in задает последнюю строку файла данных для копирования в таблицу базы данных.

Параметр iValue должен представлять адрес 64-разрядного целого числа со знаком, содержащего значение. Максимальное значение, передаваемое в BCPLASTEX, составляет 2^63-1.
BCP_OPTION_MAXERRS Число ошибок, при достижении которого операция массового копирования завершается неудачей. Значение по умолчанию равно 10. При значении менее 1 этот параметр сбрасывается в значение по умолчанию. В операции массового копирования допускается не более 65 535 ошибок. Если выполнить попытку установить этот параметр в значение, превышающее 65 535, будет установлено значение 65 535.
BCP_OPTION_ROWCOUNT Возвращает число строк, на которые распространяется действие текущей (или последней) операции bcp.
BCP_OPTION_TEXTFILE Файл данных является не двоичным, а текстовым файлом. BCP обнаруживает, представлен ли текстовый файл в формате Юникод или нет, проверяя отметку байтов Юникод в первых двух байтах файла данных.
BCP_OPTION_UNICODEFILE Если установлено значение TRUE, этот параметр указывает, что входной файл представлен в формате Юникода.

Аргументы

eOption[in]
Задает один из параметров, перечисленных в таблице выше.

iValue[in]
Значение для указанного аргумента eOption. Аргумент iValue является целым значением, приведенным к указателю void, чтобы обеспечить расширение в будущем до 64-разрядных значений.

Значения кода возврата

S_OK
Метод выполнен успешно.

E_FAIL
Произошла ошибка, связанная с поставщиком. Подробные сведения можно получить при помощи интерфейса ISQLServerErrorInfo.

E_UNEXPECTED
Непредвиденный вызов метода. Например, перед вызовом этой функции не был вызван метод IBCPSession::BCPInit.

E_OUTOFMEMORY
Недостаточно памяти.

См. также

IBCPSession (OLE DB)
Выполнение операций массового копирования