Partilhar via


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

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)

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.

Executa a operação de cópia em massa.

Sintaxe

  
HRESULT BCPExec(   
      DBROWCOUNT *pRowsCopied);  

Comentários

O método BCPExec copia os dados de um arquivo de usuário para uma tabela de banco de dados ou vice-versa, dependendo do valor do parâmetro eDirection usado com o método IBCPSession::BCPInit.

Antes de chamar BCPExec, chame o método BCPInit com um nome de arquivo de usuário válido. Caso isso não seja feito, será gerado um erro. A única exceção será se uma consulta for usada para uma operação de cópia em massa. Nesse caso, especifique NULL para o nome da tabela no método BCPInit e, depois, especifique a consulta usando a opção BCP_OPTION_HINTS.

O método BCPExec é o único método de cópia em massa que provavelmente permanecerá pendente durante qualquer intervalo de tempo. Ele é, portanto, o único método de cópia em massa que oferece suporte ao modo assíncrono. Para usar o modo assíncrono, defina a propriedade de sessão SSPROP_ASYNCH_BULKCOPY específica do provedor como VARIANT_TRUE antes de chamar o método BCPExec . Essa propriedade está disponível no conjunto de propriedades DBPROPSET_SQLSERVERSESSION. Para testar a conclusão, chame o método BCPExec com os mesmos parâmetros. Se a cópia em massa ainda não estiver concluída, o método BCPExec retornará DB_S_ASYNCHRONOUS. Ele também retornará, no argumento pRowsCopied , uma contagem de status do número de linhas que foram enviadas para o servidor ou recebidas dele. As linhas enviadas para o servidor não serão confirmadas até que o fim de um lote seja atingido.

Argumentos

pRowsCopied[out]
Um ponteiro para uma DWORD. O método BCPExec preenche a método com o número de linhas copiadas com êxito. Se o argumento pRowsCopied for definido como NULL, ele será ignorado pelo método BCPExec .

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 BCPInit não foi chamado antes da chamada desse método. Também ocorrerá se a operação for anulada com a opção BCP_OPTION_ABORT e o método BCPExec for chamado depois.

E_OUTOFMEMORY
Erro de memória insuficiente.

DB_S_ENDOFROWSET
A operação de cópia em massa terminou e toda a transferência de dados foi concluída.

DB_S_ASYNCHRONOUS
O lote atual de linhas foi copiado. Chame o método BCPExec novamente para transferir o próximo lote.

DB_S_ERRORSOCCURRED
Ocorreram erros durante a operação de cópia em massa e algumas linhas podem não ter sido copiadas. O número de erros ainda é menor do que o máximo de erros permitido.

Consulte Também

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