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

Les erreurs déclenchées par le Moteur de base de données SQL Server de Microsoft ont les attributs décrits dans le tableau ci-après.

Attribut

Description

Numéro d'erreur

Chaque message d'erreur possède un numéro d'erreur unique.

Chaîne de message d'erreur

Le message d'erreur contient des informations sur la cause probable de l'erreur. De nombreux messages d'erreur ont des variables de substitution contenant des informations telles que le nom de l'objet à l'origine de l'erreur.

Gravité

La gravité indique l'importance de l'erreur. Les erreurs dont le degré de gravité est faible (1 ou 2), sont de simples messages d'information ou des avertissements peu importants. Si le degré de gravité est élevé, le problème doit être résolu le plus rapidement possible. Pour plus d'informations sur les niveaux de gravité, consultez Niveaux de gravité des erreurs du moteur de base de données.

État

Certains messages d'erreur peuvent apparaître en de multiples endroits du code du Moteur de base de données. L'erreur 1105 par exemple, peut être provoquée par différentes conditions. Un code d'état unique est assigné à chaque condition spécifique qui déclenche une erreur.

Lors de la consultation de bases de données contenant des informations sur les problèmes connus, par exemple la Base de connaissances Microsoft, le numéro d'état vous permet de déterminer si le problème enregistré est identique à l'erreur rencontrée. Par exemple, si un article de la Base de connaissances décrit l'erreur 1105 avec le numéro d'état 2, et si le message d'erreur 1105 que vous avez reçu a le numéro d'état 3, il est probable que l'erreur n'a pas la même origine que celle signalée dans l'article.

Un ingénieur du support technique Microsoft peut également utiliser le code d'état d'une erreur pour déterminer l'emplacement du code source d'où provient ce code d'erreur. Ces informations peuvent apporter des indications supplémentaires sur la façon de diagnostiquer le problème.

Nom de la procédure

Nom de la procédure stockée ou du déclencheur dans lequel l'erreur s'est produite.

Numéro de ligne

Indique l'instruction qui a provoqué l'erreur dans un traitement, une procédure stockée, un déclencheur ou une fonction.

Tous les messages d'erreur système et tous les messages d'erreur définis par l'utilisateur dans une instance du Moteur de base de données sont contenus dans l'affichage catalogue sys.messages. Vous pouvez utiliser l'instruction RAISERROR pour retourner à une application des messages d'erreur définis par l'utilisateur.

Toutes les API de base de données, telles que l'espace de noms Microsoft.NET FrameworkSQLClient, ADO (ActiveX Data Objects), OLE DB et ODBC (Open DataBase Connectivity), renvoient les attributs d'erreur de base. Ces informations comprennent le numéro de l'erreur et la chaîne du message. Cependant, toutes les API ne signalent pas l'ensemble des autres attributs d'erreur. Pour plus d'informations, consultez Gestion des erreurs et des messages dans les applications.

Les informations relatives à une erreur qui se produit dans la portée du bloc TRY d'une construction TRY…CATCH peuvent être obtenues en code Transact-SQL à l'aide de fonctions telles que ERROR_LINE, ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY et ERROR_STATE dans la portée du bloc CATCH associé. Pour plus d'informations, consultez Récupération d'informations d'erreur dans Transact-SQL et Utilisation de TRY...CATCH dans Transact-SQL.

Exemple

L'exemple suivant interroge l'affichage catalogue sys.messages pour renvoyer une liste de tous les messages d'erreur système et de tous les messages d'erreur définis par l'utilisateur du Moteur de base de données qui contiennent du texte anglais (1033).

SELECT
    message_id,
    language_id,
    severity,
    is_event_logged,
    text
  FROM sys.messages
  WHERE language_id = 1033;

Pour plus d'informations, consultez sys.messages (Transact-SQL).