IBCPSession::BCPControl (Provedor OLE DB do cliente nativo)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)

Importante

O SQL Server Native Client (geralmente abreviado como SNAC) foi removido do SQL Server 2022 (16.x) e do SSMS (SQL Server Management Studio) 19. O provedor OLE DB do SQL Server Native Client (SQLNCLI ou SQLNCLI11) e o Provedor OLE DB herdado da Microsoft para o SQL Server (SQLOLEDB) não são recomendados para um novo desenvolvimento. Alterne para o novo Driver do Microsoft OLE DB para SQL Server (MSOLEDBSQL) no futuro.

Define as opções para uma operação de cópia em massa.

Sintaxe


HRESULT BCPControl(   
      int eOption,  
      void *iValue);  

Comentários

O método BCPControl define vários parâmetros de controle para operações de cópia em massa, inclusive o número de erros permitidos antes de cancelar uma cópia em massa, os números da primeira e da última linha a serem copiadas de um arquivo de dados e o tamanho do lote.

Esse método também é usado para especificar a instrução SELECT a ser usada na cópia em massa de dados do SQL Server. Você pode definir o argumento eOption como BCP_OPTION_HINTS e o argumento iValue para ter um ponteiro para uma cadeia de caracteres largos que contenha a instrução SELECT.

Os valores possíveis para eOption são:

Opção Descrição
BCP_OPTION_ABORT Para uma operação de cópia em massa que já está em andamento. Você pode chamar o método BCPControl com um argumento eOption com valor BCP_OPTION_ABORT de outro thread para parar uma operação de cópia em massa em execução. O argumento iValue é ignorado.
BCP_OPTION_BATCH O número de linhas por lote. O padrão é 0, que indica que todas as linhas de uma tabela quando os dados estiverem sendo extraídos, ou todas as linhas no arquivo de dados do usuário quando os dados estiverem sendo copiados para o SQL Server. Um valor menor que 1 reinicia BCP_OPTION_BATCH para o valor padrão.
BCP_OPTION_DELAYREADFMT Um booliano, se definido como true, fará com que IBCPSession::BCPReadFmt leia na execução. Se false (o padrão), IBCPSession::BCPReadFmt lerá o arquivo de formato imediatamente. Ocorrerá um erro de sequência se BCP_OPTION_DELAYREADFMT for true e você chamar IBCPSession::BCPColumns ou IBCPSession::BCPColFmt.

Também ocorrerá um erro de sequência se você chamar IBCPSession::BCPControl(BCPDELAYREADFMT, (void *)FALSE)) depois de chamar IBCPSession::BCPControl(BCPDELAYREADFMT, (void *)TRUE) e IBCPSession::BCPWriteFmt.

Para obter mais informações, veja Descoberta de metadados.
BCP_OPTION_FILECP O argumento iValue contém o número da página de código para o arquivo de dados. Você pode especificar o número da página de código, como 1252 ou 850, ou um dos seguintes valores:

BCP_FILECP_ACP: os dados no arquivo estão na página de código do Microsoft Windows do cliente.

BCP_FILECP_OEMCP: os dados do arquivo estão na página de código OEM do cliente (padrão).

BCP_FILECP_RAW: os dados do arquivo estão na página de código do SQL Server.
BCP_OPTION_FILEFMT O número de versão do formato de arquivo de dados. Isso pode ser 80 (SQL Server 2000 (8.x)), 90 (SQL Server 2005 (9.x)), 100 (SQL Server 2008 (10.0.x) ou SQL Server 2008 R2 (10.50.x)), 110 (SQL Server 2012 (11.x)) ou 120 (SQL Server 2014 (12.x). 120 é o padrão. Isso é útil para exportar e importar dados em formatos que tinham suporte em versões anteriores do servidor. Por exemplo, para importar dados obtidos de uma coluna de texto em um servidor SQL Server 2000 (8.x) para uma coluna varchar(max) em um servidor SQL Server 2005 (9.x) ou posterior, você deve especificar 80. Da mesma forma, se você especificar 80 ao exportar dados de uma coluna varchar(max) , eles serão salvos exatamente do mesmo modo que colunas de texto são salvas (no formato SQL Server 2000 (8.x)) e poderão ser importados para uma coluna de texto de um servidor SQL Server 2000 (8.x).
BCP_OPTION_FIRST A primeira linha de dados do arquivo ou da tabela a ser copiada. O padrão é 1; um valor menor que 1 redefine essa opção para seu valor padrão.
BCP_OPTION_FIRSTEX Para operações de saída BCP, especifica a primeira linha da tabela do banco de dados a ser copiada no arquivo de dados.

Para BCP em operações, especifica a primeira linha do arquivo de dados a ser copiada na tabela de banco de dados.

Espera-se que o parâmetro iValue seja o endereço de um inteiro de 64 bits assinado que contenha o valor. O valor máximo que pode ser passado para BCPFIRSTEX é 2^63-1.
BCP_OPTION_FMTXML Usado para especificar que o arquivo de formato gerado deve estar no formato XML. Por padrão, está desativado, o que implica que os arquivos formatados são salvos como arquivos de texto. O arquivo de formato XML fornece maior flexibilidade, mas com algumas restrições adicionais. Por exemplo, não é possível especificar o prefixo e terminador para um campo simultaneamente, o que é possível em arquivos de formatos mais antigos.

Observação: os arquivos de formato XML só têm suporte quando as ferramentas do SQL Server são instaladas junto com o SQL Server Native Client.
BCP_OPTION_HINTS O argumento iValue contém um ponteiro de cadeia de caracteres largo. A cadeia de caracteres endereçada especifica dicas de processamento da cópia em massa do SQL Server ou uma instrução Transact-SQL que retorna um conjunto de resultados. Se uma instrução Transact-SQL especificada retornar mais de um conjunto de resultados, todos os conjuntos de resultados depois do primeiro serão ignorados.
BCP_OPTION_KEEPIDENTITY Quando o argumento iValue é definido como TRUE, esta opção especifica que os métodos de cópia em massa inserem os valores de dados fornecidos para as colunas do SQL Server definidas com uma restrição de identidade. O arquivo de entrada deve fornecer valores para as colunas de identidade. Se essa opção não for definida, novos valores de identidade serão gerados para as linhas inseridas. Quaisquer dados contidos no arquivo para as colunas de identidade serão ignorados.
BCP_OPTION_KEEPNULLS Especifica se valores de dados vazios no arquivo serão convertidos em valores NULL na tabela SQL Server . Quando o argumento iValue é definido como TRUE, os valores vazios são convertidos para NULL na tabela do SQL Server. O padrão será converter valores vazios em um valor padrão para a coluna na tabela do SQL Server se houver um padrão.
BCP_OPTION_LAST A última linha a ser copiada. O padrão é copiar todas as linhas. Um valor menor que 1 redefine esta opção para seu valor padrão.
BCP_OPTION_LASTEX Para operações de saída BCP, especifica a última linha da tabela do banco de dados a ser copiada no arquivo de dados.

Para BCP em operações, especifica a última linha do arquivo de dados a ser copiada na tabela do banco de dados.

Espera-se que o parâmetro iValue seja o endereço de um inteiro de 64 bits assinado que contenha o valor. O valor de máximo que pode ser passado para BCPLASTEX é 2^63-1.
BCP_OPTION_MAXERRS O número de erros permitido antes da falha da operação de cópia em massa. O padrão é 10. Um valor menor que 1 redefine esta opção para seu valor padrão. A cópia em massa impõe um máximo de 65.535 erros. Uma tentativa de definir esta opção como um valor maior que 65.535 resulta na definição da opção como 65.535.
BCP_OPTION_ROWCOUNT Retorna o número de linhas afetadas pela operação BCP atual (ou última).
BCP_OPTION_TEXTFILE O arquivo de dados não é um arquivo binário, mas um arquivo de texto. O BCP detecta se o arquivo de texto é Unicode ou não verificando o marcador do byte Unicode nos primeiros 2 bytes do arquivo de dados.
BCP_OPTION_UNICODEFILE Quando definida como TRUE, essa opção especifica que o arquivo de entrada está no formato de arquivo Unicode.

Argumentos

eOption[in]
Defina como uma das opções listadas na seção de comentários, acima.

iValue[in]
O valor para o eOptionespecificado. O argumento iValue é um valor inteiro convertido para um ponteiro void para permitir a expansão futura para valores de 64 bits.

Valores do código de retorno

S_OK
O método foi bem-sucedido.

E_FAIL
Um erro específico do provedor ocorreu. Para obter informações detalhadas, use a interface ISQLServerErrorInfo.

E_UNEXPECTED
A chamada para o método era inesperada. Por exemplo, o método IBCPSession::BCPInit não foi chamado antes de chamar essa função.

E_OUTOFMEMORY
Erro de memória insuficiente.

Consulte Também

IBCPSession (OLE DB)
Executando operações de cópia em massa