Gestion des erreurs du moteur de base de données

Un grand nombre des erreurs générées par le Moteur de base de données SQL Server peuvent être capturées et résolues par programme. Les capacités de gestion des erreurs sont fournies par le langage Transact-SQL ainsi que les API (interfaces de programmation d'application) que les applications utilisent pour accéder aux données stockées dans le Moteur de base de données.

Les erreurs issues du Moteur de base de données peuvent être gérées à deux niveaux :

  • Les erreurs peuvent, d'une part, être gérées dans le Moteur de base de données grâce à l'ajout de code de gestion d'erreurs aux lots Transact-SQL, aux procédures stockées, aux déclencheurs ou aux fonctions définies par l'utilisateur. Les mécanismes de gestion d'erreurs Transact-SQL contiennent la construction TRY…CATCH (voir TRY...CATCH (Transact-SQL)), l'instruction RAISERROR et la fonction @@ERROR.
  • Les erreurs peuvent, d'autre part, être retournées à l'application appelante pour être gérées dans le code de l'application. Chacune des API qu'utilisent les applications pour accéder au Moteur de base de données offre des mécanismes de transfert des informations relatives aux erreurs vers l'application.
Rubrique Description

Présentation des erreurs du moteur de base de données

Chaque erreur du Moteur de base de données contient les attributs suivants : un numéro d'erreur, une chaîne de message, une gravité, un état, un nom de procédure et un numéro de ligne.

Récupération d'informations d'erreur dans Transact-SQL

Le code Transact-SQL peut extraire des informations sur les erreurs à l'aide des fonctions ERROR_LINE, ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY, ERROR_STATE et @@ERROR.

Utilisation de TRY...CATCH dans Transact-SQL

SQL Server 2005 permet de gérer des erreurs dans le code Transact-SQL à l'aide d'une construction TRY…CATCH similaire aux fonctions de gestion des exceptions des langages Microsoft Visual C++ et Visual C#. Lorsqu'une condition d'erreur est détectée dans un bloc TRY, le contrôle est transféré vers un bloc CATCH en vue de son traitement. Il s'agit du principal mécanisme de gestion des erreurs dans le Moteur de base de données SQL Server 2005.

Utilisation de RAISERROR

L'instruction RAISERROR peut être utilisée pour déclencher des erreurs définies par l'utilisateur. Elle peut également être utilisée dans un bloc CATCH afin de transférer vers l'application les erreurs traitées dans ce bloc.

Utilisation de PRINT

L'instruction PRINT peut être utilisée pour retourner des messages définis par l'utilisateur vers l'application.

Utilisation de @@ERROR

Dans les versions antérieures de SQL Server, la fonction @@ERROR constitue le principal mode de détection d'erreurs dans les instructions Transact-SQL. Les constructions TRY…CATCH proposent une fonctionnalité améliorée.

Gestion des erreurs et des messages dans les applications

Chacune des API d'accès aux données (ActiveX Data Objects (ADO), OLE DB et Open Database Connectivity (ODBC)) dispose de mécanismes pour signaler à l'application toute informations d'erreur reçue du Moteur de base de données.

Niveaux de gravité des erreurs du moteur de base de données

Les erreurs du Moteur de base de données et les messages d'erreur définis par l'utilisateur sont déclenchés avec des niveaux de gravité compris entre 1 et 25. Pour générer des messages d'erreur définis par l'utilisateur, vous pouvez utiliser sp_addmessage et RAISERROR.

Voir aussi

Autres ressources

sys.messages (Transact-SQL)

Aide et Informations

Assistance sur SQL Server 2005