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 traitements Transact-SQL, aux procédures stockées, aux déclencheurs ou aux fonctions définies par l'utilisateur.
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 |
---|---|
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. |
|
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. |
|
Les erreurs dans Transact-SQL sont traitées à 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. |
|
Les erreurs dans Transact-SQL sont traitées à 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. |
|
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. |
|
L'instruction PRINT peut être utilisée pour retourner des messages définis par l'utilisateur vers l'application. |
|
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. |
|
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. |
|
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. |