Partager via


Gestion des erreurs et des messages

Lorsqu’une application appelle une fonction ODBC, le pilote exécute la fonction et retourne des informations de diagnostic de deux façons : un code de retour indique la réussite ou l’échec global d’une fonction ODBC, et les enregistrements de diagnostic fournissent des informations détaillées sur la fonction. Les enregistrements de diagnostic incluent un enregistrement d’en-tête et des enregistrements d’état. Au moins un enregistrement de diagnostic, l’enregistrement d’en-tête, est retourné même si la fonction réussit.

Les informations de diagnostic sont utilisées au moment du développement pour intercepter les erreurs de programmation, telles que les handles non valides et les erreurs de syntaxe dans les instructions SQL codées en dur. Il est également utilisé au moment de l’exécution pour intercepter les erreurs et avertissements au moment de l’exécution, tels que la troncation des données, les violations de règles et les erreurs de syntaxe dans les instructions SQL entrées par l’utilisateur. La logique du programme est généralement basée sur les codes de retour.

Par exemple, après qu’une application appelle SQLFetch pour récupérer les lignes d’un jeu de résultats, le code de retour indique si la fin du jeu de résultats a été atteinte (SQL_NO_DATA), si des messages d’information ont été retournés (SQL_SUCCESS_WITH_INFO) ou si une erreur s’est produite (SQL_ERROR).

Si le pilote ODBC SQL Server Native Client retourne autre chose que SQL_SUCCESS, l’application peut appeler SQLGetDiagRec pour récupérer les messages d’information ou d’erreur. Utilisez SQLGetDiagRec pour faire défiler le message vers le haut et le bas s’il existe plusieurs messages.

Le code de retour SQL_INVALID_HANDLE indique toujours une erreur de programmation et ne doit jamais être rencontré au moment de l’exécution. Tous les autres codes de retour fournissent des informations d’exécution, même si SQL_ERROR peuvent indiquer une erreur de programmation.

L’API native Microsoft SQL Server d’origine, DB-Library pour C, permet à une application d’installer la gestion des erreurs de rappel et les fonctions de gestion des messages qui retournent des erreurs ou des messages. Certaines instructions Transact-SQL, telles que PRINT, RAISERROR, DBCC et SET, retournent leurs résultats à la fonction de gestionnaire de messages DB-Library au lieu d’un jeu de résultats. Toutefois, l’API ODBC n’a aucune fonctionnalité de rappel de ce type. Lorsque le pilote ODBC SQL Server Native Client détecte les messages provenant de SQL Server, il définit le code de retour ODBC sur SQL_SUCCESS_WITH_INFO ou SQL_ERROR et retourne le message sous la forme d’un ou plusieurs enregistrements de diagnostic. Par conséquent, une application ODBC doit tester soigneusement ces codes de retour et appeler SQLGetDiagRec pour récupérer les données de message.

Pour plus d’informations sur les erreurs de suivi, consultez Suivi de l’accès aux données. Pour plus d’informations sur les améliorations apportées au suivi des erreurs ajoutées dans SQL Server 2012, consultez Accès aux informations de diagnostic dans le journal des événements étendus.

Dans cette section

Voir aussi

SQL Server Native Client (ODBC)