Vous pouvez utiliser l'option TABLERESULTS
avec CHECKDB
(DBCC CHECKDB WITH TABLERESULTS
). Cela vous donnera un jeu d'enregistrements avec des colonnes comme Error
, Level
, State
, MessageText
(parmi beaucoup d'autres).
La colonne Level
(niveau de gravité) de ce jeu d'enregistrements doit être suffisante pour déterminer s'il y a une erreur. MS dit que les niveaux 11 à 16 sont "générés par l'utilisateur, et peuvent être corrigés par l'utilisateur". Je dirais donc que tout ce qui est au-dessus de 17 devrait signifier: arrêtez de faire des sauvegardes (pour éviter d'écraser de bonnes sauvegardes avec des sauvegardes cassées), déconnectez le système si possible et notifiez immédiatement un opérateur.
Et les niveaux 11 à 16 devraient probablement être signalés à l'opérateur aussi bien (par l'intermédiaire de l'email régulier ou de n'importe quoi), ainsi il peut vérifier dedans si nécessaire. (Je ne sais pas si CHECKDB
sera jamais signaler une erreur avec des niveaux 11 à 16 tout en ayant le code là pour enregistrer l'erreur/notifier un opérateur ne sera probablement pas mal si..)
NOTE: si vous combinez TABLERESULTS
avec NO_INFOMSGS
, et si CHECKDB
ne trouve pas les erreurs, vous pas obtenez tout recordset en conséquence, pas même un sans lignes.
NOTE2: Dans certaines conditions, CHECKDB
échouera simplement avec un code d'erreur. Jusqu'à présent, je ne l'ai vu une erreur qui déclenche cela, et il ressemble à ceci:
Msg 211, Level 23, State 51, Line 3
Possible schema corruption. Run DBCC CHECKCATALOG.
Msg 0, Level 20, State 0, Line 0
A severe error occurred on the current command. The results, if any, should be discarded.
Je ne suis pas en utilisant beaucoup ADO.NET, mais je pense que ADO.NET va réagir en lançant une exception. En outre, comme il s'agit d'une erreur de gravité> = 20, la connexion client sera fermée.
Pour résumer tout cela: je courrais DBCC CHECKDB WITH TABLERESULTS
. Si la commande échoue, il y a un problème (probablement un problème). Si ce n'est pas le cas, passez en boucle dans le jeu de résultats et recherchez les niveaux de gravité> = 17. Si vous en trouvez un, il y a probablement aussi un problème grave.
Merci pour l'URL sur la façon de corrompre une base de données, c'est vraiment utile. –
De rien! –