Compartilhar via


IBCPSession::BCPExec (OLE DB)

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

Sintaxe

  
HRESULT BCPExec(   
DBROWCOUNT *pRowsCopied);  

Observações

O método BCPExec copia 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. Falha ao fazer isso resulta em um erro. A única exceção é se uma consulta deve ser usada para uma operação de cópia em massa. Nesse caso, especifique NULL para o nome da tabela no método BCPInit e 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 estará pendente por qualquer período de tempo. Portanto, é o único método de cópia em massa que dá suporte ao modo assíncrono. Para usar o modo assíncrono, defina a propriedade de sessão específica do provedor SSPROP_ASYNCH_BULKCOPY para 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 tiver sido concluída, o método BCPExec retornará DB_S_ASYNCHRONOUS. Ele também retorna no argumento pRowsCopied uma contagem de status do número de linhas que foram enviadas ou recebidas do servidor. As linhas enviadas ao servidor não são confirmadas até que o final de um lote seja atingido.

Argumentos

pRowsCopied[out]
Um ponteiro para um DWORD. O método BCPExec preenche o DWORD 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
Ocorreu um erro específico do provedor; 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 tiver sido anulada usando a opção BCP_OPTION_ABORT e o método BCPExec tiver sido chamado posteriormente.

E_OUTOFMEMORY
Erro de memória insuficiente.

DB_S_ENDOFROWSET
A operação de cópia em massa foi concluída 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
Erros ocorreram 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 permitidos.

Consulte Também

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