Gestion des erreurs et des messages
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Lorsqu'une application appelle une fonction ODBC, le pilote exécute la fonction et retourne les informations de diagnostic de deux façons : un code de retour indique le succès ou l'échec total d'une fonction ODBC et les enregistrements de diagnostic fournissent des informations détaillées sur la fonction. Les enregistrements de diagnostic comportent 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 de manière irréversible. Elles sont également utilisées au moment de l'exécution pour intercepter les avertissements et les erreurs d'exécution, tels que la troncation de données, les violations de règle et les erreurs de syntaxe des instructions SQL saisies par l'utilisateur. La logique du programme repose en général sur des 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 se rencontrer au moment de l'exécution. Tous les autres codes de retour fournissent des informations d'exécution, bien que SQL_ERROR puisse 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 fonction de rappel similaire. 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 le suivi des erreurs, consultez Suivi de l’accès aux données. Pour plus d’informations sur les améliorations du suivi des erreurs ajoutées dans SQL Server 2012 (11.x), consultez Accès aux informations de diagnostic dans le journal des événements étendus.