Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Inicializa a estrutura de cópia em massa, executa algumas verificações de erros, verifica se os nomes de arquivo de dados e de formato estão corretos e, em seguida, os abre.
Sintaxe
HRESULT BCPInit(
const wchar_t *pwszTable,
const wchar_t *pwszDataFile,
const wchar_t *pwszErrorFile,
inteDirection);
Observações
O método BCPInit deve ser chamado antes de qualquer outro método de cópia em massa. O método BCPInit executa as inicializações necessárias para uma cópia em massa de dados entre a estação de trabalho e o SQL Server.
O método BCPInit examina a estrutura da tabela de origem ou de destino do banco de dados, não o arquivo de dados. Ele especifica valores de formato de dados para o arquivo de dados com base em cada coluna na tabela de banco de dados, exibição ou conjunto de resultados SELECT. Essa especificação inclui o tipo de dados de cada coluna, a presença ou ausência de um indicador de comprimento ou nulo e cadeias de caracteres de bytes do terminador nos dados e a largura dos tipos de dados de comprimento fixo. O método BCPInit define esses valores da seguinte maneira:
O tipo de dados especificado é o tipo de dados da coluna na tabela, exibição ou conjunto de resultados de SELECT do banco de dados. O tipo de dados é enumerado por tipos de dados nativos do SQL Server especificados no arquivo de cabeçalho do SQL Server Native Client (sqlncli.h). Seus valores estão no padrão de BCP_TYPE_XXX. Os dados são representados no formulário do computador. Ou seja, os dados de uma coluna de tipo de dados inteiros são representados por uma sequência de quatro bytes que é big-or little-endian com base no computador que criou o arquivo de dados.
Se um tipo de dados de banco de dados tiver comprimento fixo, os dados do arquivo de dados também terão comprimento fixo. Métodos de cópia em massa que processam dados (por exemplo, IBCPSession::BCPExec) analisam linhas de dados esperando que o comprimento dos dados no arquivo de dados seja idêntico ao comprimento dos dados especificados na tabela de banco de dados, exibição ou lista de colunas SELECT. Por exemplo, os dados de uma coluna de banco de dados definida como
char(13)devem ser representados por 13 caracteres para cada linha de dados no arquivo. Os dados de comprimento fixo podem ser prefixados com um indicador nulo se a coluna do banco de dados permitir valores nulos.Ao copiar dados para o SQL Server, o arquivo de dados deve ter dados para cada coluna na tabela do banco de dados. Ao copiar dados do SQL Server, os dados de todas as colunas na tabela de banco de dados, exibição ou conjunto de resultados SELECT são copiados para o arquivo de dados.
Ao copiar dados para o SQL Server, a posição ordinal de uma coluna no arquivo de dados deve ser idêntica à posição ordinal da coluna na tabela de banco de dados. Ao copiar dados do SQL Server, o método BCPExec coloca dados com base na posição ordinal da coluna na tabela de banco de dados.
Se um tipo de dados de banco de dados for variável de comprimento (por exemplo)
varbinary(22)ou se uma coluna de banco de dados puder conter valores nulos, os dados no arquivo de dados serão prefixados por um indicador de comprimento/nulo. A largura do indicador varia dependendo do tipo de dados e da versão da cópia em massa. A opção de método IBCPSession::BCPControl BCP_OPTION_FILEFMT fornece compatibilidade entre arquivos de dados de cópia em massa anteriores e servidores que executam versões posteriores do SQL Server indicando quando a largura dos indicadores nos dados é mais estreita do que o esperado.
Observação
Para alterar os valores de formato de dados especificados para um arquivo de dados, use os métodos IBCPSession::BCPColumns e IBCPSession::BCPColFmt .
As cópias em massa para o SQL Server podem ser otimizadas para tabelas que não contêm índices definindo a opção de banco de dados selecionada em/bulkcopy.
Argumentos
pwszTable[in]
O nome da tabela de banco de dados a ser copiada para dentro ou para fora. O nome pode incluir o nome do banco de dados ou o nome do proprietário. Por exemplo, "pubs.username.titles", "pubs.. títulos", "username.titles".
Se o argumento eDirection estiver definido como BCP_DIRECTION_OUT, o argumento pwszTable poderá ser o nome de uma exibição de banco de dados.
Se o argumento eDirection for definido como BCP_DIRECTION_OUT e uma instrução SELECT for especificada usando o método BCPControl antes que o método BCPExec seja chamado, o argumento pwszTable deverá ser definido como NULL.
pwszDataFile[in]
O nome do arquivo de usuário a ser copiado para dentro ou para fora.
pwszErrorFile[in]
O nome do arquivo de erro a ser preenchido com mensagens de progresso, mensagens de erro e cópias de todas as linhas que não puderam ser copiadas de um arquivo de usuário para uma tabela. Se o argumento pwszErrorFile estiver definido como NULL, nenhum arquivo de erro será usado.
eDirection[in]
A direção da operação de cópia, BCP_DIRECTION_IN ou BCP_DIRECTION _OUT. BCP_DIRECTION _IN indica uma cópia de um arquivo de usuário para uma tabela de banco de dados; BCP_DIRECTION _OUT indica uma cópia de uma tabela de banco de dados para um arquivo de usuário.
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_OUTOFMEMORY
Erro de memória insuficiente.
E_INVALIDARG
Um ou mais dos argumentos não foram especificados corretamente. Por exemplo, um nome de arquivo inválido foi fornecido.