Compartilhar via


Convertendo de cópia em massa DB-Library em ODBC

A conversão de um DB-Library programa de cópia em massa para ODBC é fácil porque as funções de cópia em massa compatíveis com o driver ODBC SQL Server Native Client são semelhantes às funções de cópia em massa DB-Library, com as seguintes exceções:

  • Os aplicativos DB-Library passam, para uma estrutura DBPROCESS, um ponteiro como o primeiro parâmetro de funções de cópia em massa. Em aplicativos ODBC, o ponteiro DBPROCESS é substituído por um identificador de conexão ODBC.

  • DB-Library aplicativos chamam BCP_SETL antes de se conectar para habilitar operações de cópia em massa em um DBPROCESS. Em vez disso, os aplicativos ODBC chamam SQLSetConnectAttr antes de se conectarem para habilitar operações em massa em um identificador de conexão:

    SQLSetConnectAttr(hdbc, SQL_COPT_SS_BCP,  
        (void *)SQL_BCP_ON, SQL_IS_INTEGER);  
    
  • O driver ODBC SQL Server Native Client não dá suporte a DB-Library manipuladores de mensagens e erros; você deve chamar SQLGetDiagRec para obter erros e mensagens geradas pelas funções de cópia em massa do ODBC. As versões ODBC das funções de cópia em massa retornam os códigos de retorno padrão da cópia em massa, SUCCEED ou FAILED, e não os códigos de retorno ODBC, como SQL_SUCCESS ou SQL_ERROR.

  • Os valores especificados para o parâmetro DB-Library bcp_bindvarlen são interpretados de forma diferente do parâmetro ODBC bcp_bindcbData .

    Condição indicada DB-Library valor varlen Valor cbData do ODBC
    Valores nulos fornecidos 0 -1 (SQL_NULL_DATA)
    Dados de variável fornecidos -1 -10 (SQL_VARLEN_DATA)
    Cadeia binária ou de caracteres de comprimento zero NA 0

    Em DB-Library, um valor varlen de -1 indica que os dados de comprimento variável estão sendo fornecidos, o que no cbData ODBC é interpretado para significar que apenas valores NULL estão sendo fornecidos. Altere qualquer DB-Library especificações varlen de -1 para SQL_VARLEN_DATA e quaisquer especificações varlen de 0 para SQL_NULL_DATA.

  • O DB-Library bcp_colfmtfile_collen e o ODBC bcp_colfmtcbUserData têm o mesmo problema que os parâmetros varlen e cbDatabcp_bind observados acima. Altere qualquer DB-Library especificações de file_collen de -1 para SQL_VARLEN_DATA e quaisquer especificações de file_collen de 0 para SQL_NULL_DATA.

  • O parâmetro iValue da função ODBC bcp_control é um ponteiro nulo. Na Biblioteca de Bancos de Dados, iValue era um inteiro. Converta os valores do iValue ODBC como void *.

  • A opção bcp_control BCPMAXERRS especifica quantas linhas individuais podem ter erros antes que uma operação de cópia em massa falhe. O padrão para BCPMAXERRS é 0 (falha no primeiro erro) na versão DB-Library de bcp_control e 10 na versão ODBC. DB-Library aplicativos que dependem do padrão de 0 para encerrar uma operação de cópia em massa devem ser alterados para chamar o ODBC bcp_control para definir BCPMAXERRS como 0.

  • A função de bcp_control ODBC dá suporte às seguintes opções não compatíveis com a versão DB-Library do bcp_control:

    • BCPODBC

      Quando definido como TRUE, especifica que os valores datetime e smalldatetime salvos no formato de caractere terão o prefixo e o sufixo da sequência de escape do carimbo de data/hora ODBC. Isso se aplica apenas a operações BCP_OUT.

      Com BCPODBC definido como FALSE, um valor datetime convertido em uma cadeia de caracteres é gerado como:

      1997-01-01 00:00:00.000  
      

      Com BCPODBC definido como TRUE, o mesmo valor datetime é a saída como:

      {ts '1997-01-01 00:00:00.000' }  
      
    • BCPKEEPIDENTITY

      Quando definido como TRUE, especifica que as funções de cópia em massa inserem valores de dados fornecidos para colunas com restrições de identidade. Se essa opção não for definida, novos valores de identidade serão gerados para as linhas inseridas.

    • BCPHINTS

      Especifica várias otimizações de cópia em massa. Essa opção não pode ser usada em versões 6.5 ou anteriores do SQL Server.

    • BCPFILECP

      Especifica a página de código do arquivo de cópia em massa.

    • BCPUNICODEFILE

      Especifica que um arquivo de cópia em massa em modo de caractere é um arquivo Unicode.

  • A função ODBC bcp_colfmt não dá suporte ao indicador file_type de SQLCHAR porque está em conflito com o typedef SQLCHAR do ODBC. Em vez disso, use SQLCHARACTER para bcp_colfmt.

  • Nas versões ODBC das funções de cópia em massa, o formato para trabalhar com valores datetime e smalldatetime em cadeias de caracteres é o formato ODBC de yyyy-mm-dd hh:mm:ss.sss; os valores smalldatetime usam o formato ODBC de yyyy-mm-dd hh:mm:ss.

    As versões DB-Library das funções de cópia em massa aceitam valores datetime e smalldatetime em cadeias de caracteres usando vários formatos:

    • O formato padrão é mmm dd yyyy hh:mmxx , em que xx é AM ou PM.

    • cadeias de caracteres datetime e smalldatetime em qualquer formato compatível com a função DB-Library dbconvert .

    • Quando a caixa Usar configurações internacionais é marcada na guia Opções DB-Library do Utilitário de Rede do Cliente SQL Server, as funções de cópia em massa do DB-Library também aceitam datas no formato de data regional definido para a configuração de localidade do registro do computador cliente.

    As funções de cópia em massa DB-Library não aceitam os formatos datetime e smalldatetime do ODBC.

    Se o atributo da instrução SQL_SOPT_SS_REGIONALIZE estiver definido como SQL_RE_ON, as funções de cópia em massa do ODBC aceitarão datas no formato de data regional definido para a configuração de localidade do registro do computador cliente.

  • Ao gerar valores monetários no formato de caractere, as funções de cópia em massa ODBC fornecem quatro dígitos de precisão e nenhum separador de vírgula; DB-Library versões fornecem apenas dois dígitos de precisão e incluem os separadores de vírgulas.

Consulte Também

Executando operações de cópia em massa (ODBC)
Bulk Copy Functions