Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
S'applique à :SQL Server
Lorsqu'une erreur est déclenchée par le moteur de base de données de SQL Server, la gravité de l'erreur indique le type de problème rencontré par SQL Server.
Niveaux de gravité
Le tableau suivant répertorie et décrit les niveaux de gravité des erreurs déclenchées par le moteur de base de données de SQL Server.
| Niveau de gravité | Description |
|---|---|
| 0-9 | Indiquez les messages d’information qui retournent des informations d’état ou signalent des erreurs qui ne sont pas graves. Le moteur de base de données ne déclenche pas d'erreurs système dont les niveaux de gravité sont compris entre 0 et 9. |
| 10 | Indique les messages d’information qui retournent des informations d’état ou signalent des erreurs qui ne sont pas graves. Pour des raisons de compatibilité, le moteur de base de données convertit le niveau de gravité 10 en 0 avant de retourner les informations d'erreur à l'application appelante. |
| 11-16 | Indique les erreurs pouvant être corrigées par l'utilisateur. |
| 11 | Indique que l'objet ou l'entité spécifique n'existe pas. |
| 12 | Niveau de gravité particulier pour les requêtes qui n'utilisent pas de verrouillage en raison d'indicateurs de requête spéciaux. Dans certains cas, les opérations de lecture effectuées par ces instructions peuvent entraîner des données incohérentes, car les verrous ne sont pas pris pour garantir la cohérence. |
| 13 | Indique des erreurs de blocage de transaction. |
| 14 | Indique des erreurs liées à la sécurité, par exemple le refus d'une autorisation. |
| 15 | Indique des erreurs de syntaxe dans la commande Transact-SQL. |
| 16 | Indique des erreurs générales qui peuvent être corrigées par l'utilisateur. |
| 17-19 | Indique des erreurs logicielles qui ne peuvent pas être corrigées par l'utilisateur. Informez votre administrateur système de l'existence du problème. |
| 17 | Indique que l'instruction a obligé SQL Server à s'exécuter avec des ressources insuffisantes (mémoire, verrous ou espace disque de la base de données) ou à dépasser une limite fixée par l'administrateur système. |
| 18 | Indique un problème dans le logiciel du moteur de base de données, mais l’instruction se termine et la connexion à l’instance du moteur de base de données est conservée. L'administrateur système doit être informé chaque fois qu'un message s'affiche avec le niveau de gravité 18. |
| 19 | Indique qu'une limite non configurable du moteur de base de données est dépassée et que le traitement est terminé. Les messages d'erreur dont le niveau de gravité est supérieur ou égal à 19 arrêtent l'exécution du traitement actuel. Les erreurs dont le niveau de gravité est 19 se produisent rarement ; elles doivent être résolues par l'administrateur système ou votre support technique. Contactez votre administrateur système en cas de déclenchement d'un message dont le niveau de gravité est 19. Les messages d’erreur dont le niveau de gravité est compris entre 19 et 25 sont inscrits dans le journal des erreurs. |
| 20-24 | Indiquez les problèmes système et sont des erreurs irrécupérables, ce qui signifie que la tâche du moteur de base de données qui exécute une instruction ou un lot n’est plus en cours d’exécution. La tâche enregistre des informations sur ce qui s'est produit, puis se termine. Dans la plupart des cas, la connexion de l’application à l’instance du moteur de base de données peut également se terminer. Si c’est le cas, selon le problème, l’application peut ne pas être en mesure de se reconnecter. Les messages d’erreur de cette plage peuvent affecter tous les processus qui accèdent aux données de la base de données et peuvent indiquer qu’une base de données ou un objet est endommagé. Les messages d'erreur dont le niveau de gravité est compris entre 19 et 24 sont inscrits dans le journal des erreurs. |
| 20 | Indique qu’une instruction a rencontré un problème. Étant donné que le problème n’a affecté que la tâche actuelle, il n’est probablement pas probable que la base de données elle-même soit endommagée. |
| 21 | Indique qu’un problème a été rencontré qui affecte toutes les tâches de la base de données active, mais il n’est pas probable que la base de données elle-même soit endommagée. |
| 22 | Indique que la table ou l'index spécifié dans le message a été endommagé à la suite d'un problème logiciel ou matériel. Les erreurs dont le niveau de gravité est 22 se produisent rarement. Si ce type d'erreur se produit, exécutez DBCC CHECKDB pour déterminer si d'autres objets de la base de données sont également endommagés. Il est possible que le problème provienne uniquement du cache des tampons et non du disque lui-même. Dans ce cas, le redémarrage de l'instance du moteur de base de données permet de corriger le problème. Pour continuer à fonctionner, vous devez vous reconnecter à l’instance du moteur de base de données. Sinon, utilisez cette option DBCC pour réparer le problème. Dans certains cas, vous devrez peut-être restaurer la base de données.Si le redémarrage de l’instance du moteur de base de données ne corrige pas le problème, le problème se trouve sur le disque. Parfois, la destruction de l’objet spécifié dans le message d’erreur résout le problème. Par exemple, si le message indique que l'instance du moteur de base de données a trouvé une ligne de longueur 0 dans un index non-cluster, supprimez l'index et reconstruisez-le. |
| 23 | Indique que l'intégrité de la totalité de la base de données est douteuse en raison d'un problème matériel ou logiciel. Les erreurs dont le niveau de gravité est 23 se produisent rarement. Si ce type d'erreur se produit, exécutez DBCC CHECKDB pour déterminer l'étendue des dommages. Il est possible que le problème provienne uniquement du cache et non du disque lui-même. Dans ce cas, le redémarrage de l'instance du moteur de base de données permet de corriger le problème. Pour continuer à fonctionner, vous devez vous reconnecter à l’instance du moteur de base de données. Sinon, utilisez cette option DBCC pour réparer le problème. Dans certains cas, vous devrez peut-être restaurer la base de données. |
| 24 | Indique une défaillance du support. L’administrateur système peut avoir besoin de restaurer la base de données. Vous devrez peut-être également appeler votre fournisseur de matériel. |
Niveau de gravité des messages d'erreur définis par l'utilisateur
Vous pouvez utiliser sp_addmessage pour ajouter des messages d’erreur définis par l’utilisateur avec des sévérités de 1 à 25 à la vue de catalogue sys.messages. Ces messages d'erreur définis par l'utilisateur peuvent être utilisés par RAISERROR. Pour plus d’informations, consultez sp_addmessage.
RAISERROR permet de générer des messages d'erreur définis par l'utilisateur et dont les niveaux de gravité vont de 1 à 25.
RAISERROR peut référencer un message d’erreur défini par l’utilisateur stocké dans la vue de catalogue sys.messages ou construire un message dynamiquement. Lorsqu’il RAISERROR utilise un message sys.messages d’erreur défini par l’utilisateur lorsqu’il génère une erreur, la gravité spécifiée en RAISERROR substitue la gravité spécifiée dans sys.messages. Pour plus d’informations, consultez RAISERROR.
Gravité d’erreur et TRY...CATCH
Une TRY...CATCH construction intercepte toutes les erreurs d’exécution avec une gravité supérieure à 10 qui ne terminent pas la connexion de base de données.
Les erreurs de gravité comprises entre 0 et 10 sont des messages d’information et ne provoquent pas l’exécution à partir du CATCH bloc d’une TRY...CATCH construction.
Les erreurs qui terminent la connexion de base de données, généralement avec une gravité comprise entre 20 et 25, ne sont pas gérées par le bloc, car l’exécution CATCH est abandonnée lorsque la connexion se termine.
Pour plus d’informations, consultez TRY... CATCH.
Récupérer la gravité des erreurs
La ERROR_SEVERITY fonction système peut être utilisée pour récupérer la gravité de l’erreur qui a provoqué l’exécution CATCH du bloc d’une TRY...CATCH construction.
ERROR_SEVERITY retourne NULL si elle est appelée en dehors de l’étendue d’un CATCH bloc. Pour plus d’informations, consultez ERROR_SEVERITY.