Partilhar via


IBCPSession::BCPInit (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

Inicializa a estrutura de cópia em massa, faz verificação de erros, verifica se os nomes dos ficheiros de dados e formato estão corretos, e depois abre-os.

Sintaxe

  
HRESULT BCPInit(   
      const wchar_t *pwszTable,  
      const wchar_t *pwszDataFile,  
      const wchar_t *pwszErrorFile,  
      int eDirection);  

Observações

O método BCPInit deve ser chamado antes de qualquer outro método de cópia em massa. O método BCPInit realiza as inicializações necessárias para uma cópia em massa dos dados entre a estação de trabalho e o SQL Server.

O método BCPInit examina a estrutura da fonte da base de dados ou da tabela alvo, não o ficheiro de dados. Especifica valores de formato de dados para o ficheiro de dados com base em cada coluna da tabela da base de dados, vista ou conjunto de resultados SELECT. Esta especificação inclui o tipo de dados de cada coluna, a presença ou ausência de um indicador de comprimento ou nulo e de cadeias de bytes de terminador nos dados, e a largura dos tipos de dados de comprimento fixo. O método BCPInit define estes valores da seguinte forma:

  • O tipo de dados especificado é o tipo de dados da coluna na tabela da base de dados, vista ou conjunto de resultados SELECT. O tipo de dado é enumerado pelos tipos nativos de dados do SQL Server especificados no ficheiro de cabeçalho do OLE DB DB Driver for SQL Server (msoledbsql.h). Os seus valores seguem o padrão da BCP_TYPE_XXX. Os dados são representados na sua forma informática. Ou seja, dados de uma coluna de tipo inteiro são representados por uma sequência de quatro bytes que é big-ou little-endian, baseada no computador que criou o ficheiro de dados.

  • Se um tipo de dado de base de dados estiver fixo em comprimento, os dados do ficheiro de dados também são fixos em comprimento. 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 ficheiro seja idêntico ao comprimento dos dados especificados na tabela da base de dados, vista ou lista de colunas SELECT. Por exemplo, os dados para uma coluna de base de dados definida como char(13) devem ser representados por 13 caracteres para cada linha de dados no ficheiro. Os dados de comprimento fixo podem ser precedidos por um indicador nulo se a coluna da base de dados permitir valores nulos.

  • Ao copiar dados para o SQL Server, o ficheiro de dados deve ter dados para cada coluna da tabela da base de dados. Ao copiar dados do SQL Server, os dados de todas as colunas da tabela da base de dados, vista ou conjunto de resultados SELECT são copiados para o ficheiro de dados.

  • Ao copiar dados para o SQL Server, a posição ordinal de uma coluna no ficheiro de dados deve ser idêntica à posição ordinal da coluna na tabela da base de dados. Ao copiar dados do SQL Server, o método BCPExec coloca os dados com base na posição ordinal da coluna na tabela da base de dados.

  • Se um tipo de dado de base de dados for variável em comprimento (por exemplo, varbinary(22)) ou se uma coluna de base de dados puder conter valores nulos, os dados no ficheiro de dados são prefixados por um indicador de comprimento/nulo. A largura do indicador varia consoante o tipo de dados e a versão da cópia em massa. A opção de método IBCPSession::BCPControl BCP_OPTION_FILEFMT proporciona compatibilidade entre ficheiros 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 ficheiro de dados, utilize os métodos IBCPSession::BCPColumns e IBCPSession::BCPColFmt.

Cópias em massa para SQL Server podem ser otimizadas para tabelas que não contenham índices definindo a opção de base de dados select em/bulkcopy.

Arguments

pwszTable[in]
O nome da tabela da base de dados a ser copiada para dentro ou para fora. O nome pode incluir o nome da base de dados ou o nome do proprietário. Por exemplo, "pubs.username.titles", "pubs.. títulos", "nome de utilizador.títulos".

Se o argumento eDirection estiver definido para BCP_DIRECTION_OUT, o argumento pwszTable pode ser o nome de uma vista de base de dados.

Se o argumento eDirection for definido para BCP_DIRECTION_OUT e uma instrução SELECT for especificada usando o método BCPControl antes de o método BCPExec ser chamado, o argumento pwszTable deve ser definido como NULL.

pwszDataFile[in]
O nome do ficheiro de utilizador a ser copiado para dentro ou para fora.

pwszErrorFile[in]
O nome do ficheiro de erro a ser preenchido com mensagens de progresso, mensagens de erro e cópias de quaisquer linhas que não pudessem ser copiadas de um ficheiro de utilizador para uma tabela. Se o argumento pwszErrorFile for definido como NULL, não é utilizado nenhum ficheiro de erro.

eDirection[in]
A direção da operação de cópia, seja BCP_DIRECTION_IN ou BCP_DIRECTION _OUT. BCP_DIRECTION _IN indica uma cópia de um ficheiro de utilizador para uma tabela de base de dados; BCP_DIRECTION _OUT indica uma cópia de uma tabela de base de dados para um ficheiro de utilizador.

Valores do código de retorno

S_OK
O método teve sucesso.

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

E_OUTOFMEMORY
Erro de falta de memória.

E_INVALIDARG
Um ou mais dos argumentos não foram corretamente especificados. Por exemplo, foi dado um nome de ficheiro inválido.

Ver também

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