Partager via


Conversion à partir de la bibliothèque de bases de données vers une copie en bloc ODBC

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

La conversion d’un programme de copie en bloc de bibliothèque de bases de données en ODBC est facile, car les fonctions de copie en bloc prises en charge par le pilote ODBC SQL Server Native Client sont similaires aux fonctions de copie en bloc de la bibliothèque de bases de données, à l’exception des exceptions suivantes :

  • Les applications de bibliothèque de bases de données passent un pointeur à une structure DBPROCESS comme premier paramètre de fonctions de copie en bloc. Dans les applications ODBC, le pointeur DBPROCESS est remplacé par un handle de connexion ODBC.

  • Les applications de bibliothèque de bases de données appellent BCP_SETL avant de se connecter pour activer les opérations de copie en bloc sur un DBPROCESS. Les applications ODBC appellent plutôt SQLSetConnectAttr avant de se connecter pour activer les opérations en bloc sur un handle de connexion :

    SQLSetConnectAttr(hdbc, SQL_COPT_SS_BCP,  
        (void *)SQL_BCP_ON, SQL_IS_INTEGER);  
    
  • Le pilote ODBC SQL Server Native Client ne prend pas en charge les gestionnaires de messages et d’erreurs de la bibliothèque de bases de données ; vous devez appeler SQLGetDiagRec pour obtenir des erreurs et des messages déclenchés par les fonctions de copie en bloc ODBC. Les versions ODBC de fonctions de copie en bloc retournent les codes de retour de copie en bloc standard de SUCCEED ou FAILED, et non les codes de retour de style ODBC, tels que SQL_SUCCESS ou SQL_ERROR.

  • Les valeurs spécifiées pour le paramètre db-Library bcp_bindvarlen sont interprétées différemment du paramètre ODBC bcp_bindcbData.

    Condition indiquée Valeur varlen de la bibliothèque de bases de données Valeur cbData ODBC
    Valeurs NULL fournies 0 -1 (SQL_NULL_DATA)
    Données de variables fournies -1 -10 (SQL_VARLEN_DATA)
    Caractère de longueur nulle ou chaîne binaire NA 0

    Dans DB-Library, une valeur varlen de -1 indique que les données de longueur variable sont fournies, ce qui est interprété dans ODBC cbData pour signifier que seules les valeurs NULL sont fournies. Modifiez les spécifications varlen de la bibliothèque de bases de données de -1 en SQL_VARLEN_DATA et toutes les spécifications varlen de 0 à SQL_NULL_DATA.

  • La bibliothèque de bases de données bcp_colfmtfile_collen et odbc bcp_colfmtcbUserData ont le même problème que les paramètres bcp_bindvarlen et cbData notés ci-dessus. Modifiez les spécifications de file_collen db-Library de -1 à SQL_VARLEN_DATA et les spécifications file_collen de 0 à SQL_NULL_DATA.

  • Le paramètre iValue de la fonction bcp_control ODBC est un pointeur void. Dans DB-Library, iValue était un entier. Cassez les valeurs de l’iValue ODBC en void *.

  • L’option bcp_control BCPMAXERRS spécifie le nombre de lignes individuelles pouvant avoir des erreurs avant qu’une opération de copie en bloc échoue. La valeur par défaut de BCPMAXERRS est 0 (échec lors de la première erreur) dans la version de la bibliothèque de bases de données de bcp_control et 10 dans la version ODBC. Les applications de bibliothèque de bases de données qui dépendent de la valeur par défaut 0 pour arrêter une opération de copie en bloc doivent être modifiées pour appeler le bcp_control ODBC pour définir BCPMAXERRS sur 0.

  • La fonction odbc bcp_control prend en charge les options suivantes non prises en charge par la version de la bibliothèque de bases de données de bcp_control :

    • BCPODBC

      Lorsque la valeur est TRUE, spécifie que les valeurs datetime et smalldatetime enregistrées au format caractère auront le préfixe et le suffixe de séquence d’échappement ODBC. Cela s'applique seulement aux opérations BCP_OUT.

      Avec BCPODBC défini sur FALSE, une valeur datetime convertie en chaîne de caractères est générée comme suit :

      1997-01-01 00:00:00.000  
      

      Avec BCPODBC défini sur TRUE, la même valeur datetime est sortie que :

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

      Si la valeur est TRUE, spécifie que les fonctions de copie en bloc insèrent les valeurs de données fournies pour les colonnes avec des contraintes d'identité. Si cela n'est pas défini, de nouvelles valeurs d'identités sont générées pour les lignes insérées.

    • BCPHINTS

      Spécifie diverses optimisations de copie en bloc. Cette option ne peut pas être utilisée sur la version 6.5 ou antérieure de SQL Server.

    • BCPFILECP

      Spécifie la page de codes du fichier de copie en bloc.

    • BCPUNICODEFILE

      Spécifie qu'un fichier de copie en bloc en mode caractère est un fichier Unicode.

  • La fonction odbc bcp_colfmt ne prend pas en charge l’indicateur file_type de SQLCHAR, car il est en conflit avec le typedef ODBC SQLCHAR. Utilisez PLUTÔT SQLCHARACTER pour bcp_colfmt.

  • Dans les versions ODBC des fonctions de copie en bloc, le format d’utilisation des valeurs datetime et smalldatetime dans les chaînes de caractères est le format ODBC de aaaa-mm-dd hh :mm :ss.ss ; les valeurs smalldatetime utilisent le format ODBC de aaaa-mm-jj hh :mm :ss.

    Les versions de la bibliothèque de bases de données des fonctions de copie en bloc acceptent les valeurs datetime et smalldatetime dans les chaînes de caractères à l’aide de plusieurs formats :

    • Le format par défaut est mmm dd aaaa hh :mmxxxx est AM ou PM.

    • chaînes de caractères datetime et smalldatetime dans n’importe quel format pris en charge par la fonction DB-Library dbconvert .

    • Lorsque la case Utiliser les paramètres internationaux est cochée sous l’onglet Options de la bibliothèque de bases de données de l’utilitaire de réseau client SQL Server, les fonctions de copie en bloc de la bibliothèque de bases de données acceptent également les dates au format de date régional défini pour le paramètre régional du registre d’ordinateurs clients.

    Les fonctions de copie en bloc de la bibliothèque de bases de données n’acceptent pas les formats datetime et smalldatetime ODBC.

    Si l'attribut d'instruction SQL_SOPT_SS_REGIONALIZE a la valeur SQL_RE_ON, les fonctions de copie en bloc ODBC acceptent les dates au format de date régional défini pour les paramètres régionaux du Registre de l'ordinateur client.

  • Lors de la sortie des valeurs monétaires au format caractère, les fonctions de copie en bloc ODBC fournissent quatre chiffres de précision et aucun séparateur de virgule ; Les versions de la bibliothèque de bases de données fournissent uniquement deux chiffres de précision et incluent les séparateurs de virgules.

Voir aussi

Exécution d’opérations de copie en bloc (ODBC)
Fonctions de copie en bloc