web-dev-qa-db-fra.com

Existe-t-il une vue d'ensemble de tous les codes d'erreur SQL Server 2012?

SQLGetDiagRec retourne un code d'erreur natif. Existe-t-il un aperçu des codes d'erreur de SQL Server 2012? Je n'ai rien trouvé sur MSDN.

14
Antineutrino
use master
select * from sysmessages
28
David Brabant

Je ne parviens pas à trouver une liste des codes individuels sur Internet. Cependant, j'ai trouvé une liste des niveaux de gravité ici sur MSDN. Ils sont comme suit:

Niveau de gravité/Description

  • 0-9: messages d’information qui renvoient des informations sur l’état ou signalent Des erreurs graves. Le moteur de base de données ne génère pas d'erreurs système Avec des gravités comprises entre 0 et 9.
  • 10: Messages d’information Renvoyant des informations sur l’état ou signalant des erreurs non graves. Pour des raisons de compatibilité, le moteur de base de données convertit la gravité 10 En gravité 0 avant de renvoyer 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é donnée n'existe pas.
  • 12: Une gravité spéciale pour les requêtes qui n'utilisent pas le verrouillage en raison d'indications de requête spéciales . Dans certains cas, les opérations de lecture effectuées par Ces instructions pourraient entraîner des données incohérentes, car les verrous ne permettent pas de Garantir la cohérence.
  • 13: Indique les erreurs de blocage de la transaction .
  • 14: indique des erreurs liées à la sécurité, telles que l'autorisation refusée .
  • 15: indique des erreurs de syntaxe dans la commande Transact-SQL .
  • 16: Indique les erreurs générales pouvant être corrigées par l'utilisateur .
  • 17-19: Indique les erreurs logicielles qui ne peuvent pas être corrigées par l'utilisateur . Informez votre administrateur système du problème.
  • 17: Indique Que l'instruction a entraîné une saturation des ressources de SQL Server (telle que De la mémoire, des verrous ou de l'espace disque de la base de données) ou le dépassement d'une limite de Définie par l'administrateur système.
  • 18: indique un problème dans le logiciel du moteur de base de données , Mais l'exécution de l'instruction est terminée et la connexion à l'instance du moteur de base de données est maintenue. L'administrateur système doit être informé chaque fois qu'un message avec un niveau de gravité de 18 apparaît.
  • 19: Indique qu'une limite non configurable Du moteur de base de données et que le processus de traitement par lots en cours Ont été arrêtés. Les messages d'erreur avec un niveau de gravité de 19 ou Supérieur arrêtent l'exécution du lot en cours. Les erreurs de niveau de gravité 19 Sont rares et doivent être corrigées par l'administrateur système ou par Votre fournisseur d'assistance principal. Contactez votre administrateur système lorsque Un message de niveau de gravité 19 est généré. Les messages d'erreur avec un niveau de gravité Compris entre 19 et 25 sont écrits dans le journal des erreurs.
  • 20-24: Indiquez les problèmes système et les erreurs fatales, 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 que 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 prendre fin. Si cela se produit, l'application risque de ne pas Pouvoir se reconnecter. . Les messages d'erreur dans cette plage peuvent affecter tous Les processus accédant aux données de la même base de données et peuvent indiquer Qu'une base de données ou un objet est endommagé. Les messages d'erreur avec un niveau de gravité Compris entre 19 et 24 sont écrits dans le journal des erreurs.
  • 20: indique Qu’une déclaration a rencontré un problème. Comme le problème N'a affecté que la tâche en cours, il est peu probable que la base de données Ait été endommagée.
  • 21: indique qu'un problème rencontré avec Concerne toutes les tâches de la base de données actuelle, mais il est peu probable Que la base de données elle-même ait été endommagée.
  • 22: indique Que la table ou l'index spécifié dans le message a été endommagé par Un problème matériel ou logiciel. Les erreurs de niveau de gravité 22 se produisent Rarement. Le cas échéant, exécutez DBCC CHECKDB pour déterminer si d'autres objets De la base de données sont également endommagés. Le problème peut n'être que dans le cache de mémoire tampon Et non sur le disque lui-même. Si tel est le cas, le fait de redémarrer l'instance Du moteur de base de données corrige le problème. Pour continuer à travailler , Vous devez vous reconnecter à l'instance du moteur de base de données; Sinon, utilisez 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, celui-ci se trouve sur le disque . Parfois, la destruction de l'objet spécifié dans le message d'erreur Peut résoudre le problème. Par exemple, si le message indique Que l'instance du moteur de base de données a trouvé une ligne d'une longueur De 0 dans un index non clusterisé, supprimez l'index et reconstruisez-le.
  • 23: Indique que l'intégrité de la base de données entière est en cause dans en raison d'un problème matériel ou logiciel. Niveau de gravité 23 Les erreurs se produisent rarement. Si cela se produit, exécutez DBCC CHECKDB pour déterminer l'étendue Des dommages. Le problème peut ne concerner que le cache et non pas Sur le disque lui-même. Si tel est le cas, le redémarrage de l'instance du moteur de base de données Corrige le problème. Pour continuer à travailler, vous devez reconnecter À l'instance du moteur de base de données. sinon, utilisez 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 devra peut-être Restaurer la base de données. Vous devrez peut-être également appeler votre fournisseur de matériel.
7
Keith

J'ai trouvé les codes pour MS SQL Server 2008 R2, mais la plupart d'entre eux sont vrais pour les versions ultérieures: http://technet.Microsoft.com/en-us/library/cc645603(v=sql .105) .aspx

Je recherchais moi aussi une liste et découvris que vous pouviez toutes les visualiser à partir de la base de données maître en exécutant cette instruction:

SELECT * FROM sysmessages
3
Jose

Dans SQL Server 2005 et supérieur, vous pouvez utiliser ceci:

SELECT * FROM sys.messages

Comme d'autres l'ont mentionné, vous pouvez également utiliser (disponible dans SQL Server 2000):

SELECT * FROM sysmessages
0
alienriver49