Partilhar via


IBCPSession::BCPExec (OLE DB)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Base de dados SQL no Microsoft Fabric

Baixar driver OLE DB

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

Sintaxe

  
HRESULT BCPExec(   
      DBROWCOUNT *pRowsCopied);  

Observações

O método BCPExec copia dados de um ficheiro de utilizador para uma tabela de base de dados ou vice-versa, dependendo do valor do parâmetro eDirection usado com o método IBCPSession::BCPInit .

Antes de chamar o BCPExec, chame o método BCPInit com um nome de ficheiro de utilizador válido. Não o fazer resulta num erro. A única exceção é 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 algum tempo. É, portanto, o único método de cópia em massa que suporta o modo assíncrono. Para usar o modo assíncrono, defina a propriedade de sessão específica do fornecedor SSPROP_ASYNCH_BULKCOPY para VARIANT_TRUE antes de chamar o método BCPExec . Esta propriedade está disponível no conjunto de propriedades DBPROPSET_SQLSERVERSESSION. Para testar a completude, 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 devolve DB_S_ASYNCHRONOUS. Também devolve no argumento pRowsCopied uma contagem de estado do número de linhas que foram enviadas ou recebidas do servidor. As linhas enviadas para o servidor não são comprometidas até que o fim de um lote seja alcançado.

Arguments

pRowCopiado[desligado]
Um apontar para um DWORD. O método BCPExec preenche o DWORD com o número de linhas copiadas com sucesso. Se o argumento pRowsCopied estiver definido como NULL, é ignorado pelo método BCPExec .

Valores do código de retorno

S_OK
O método teve sucesso.

E_FAIL
Ocorreu um erro específico do fornecedor; para obter informações detalhadas, use a interface ISQLServerErrorInfo .

E_UNEXPECTED
A chamada para o método foi inesperada. Por exemplo, o método BCPInit não era chamado antes de chamar este método. Também ocorre se a operação foi abortada usando a opção BCP_OPTION_ABORT, e o método BCPExec foi chamado posteriormente.

E_OUTOFMEMORY
Erro de falta de memória.

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 novamente o método BCPExec 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 continua a ser inferior ao máximo permitido.

Ver também

IBCPSession (OLE DB)
Realização de Operações de Cópia em Massa