C'est un problème que j'ai vu d'autres personnes que moi, et je n'ai pas trouvé une bonne explication.Pourquoi les plans de maintenance Sql Server 2005 utilisent-ils la mauvaise base de données pour dbcc checkdb?
Disons que vous avez un plan d'entretien avec une tâche de vérifier la base de données, quelque chose comme ceci:
USE [MyDb]
GO
DBCC CHECKDB with no_infomsgs, all_errormsgs
Si vous allez regarder dans vos journaux après exécution de la tâche, vous pouvez voir quelque chose comme ceci:
08/15/2008 06:00:22,spid55,Unknown,DBCC CHECKDB (mssqlsystemresource) executed by NT AUTHORITY\SYSTEM found 0 errors and repaired 0 errors. Elapsed time: 0 hours 0 minutes 0 seconds.
08/15/2008 06:00:21,spid55,Unknown,DBCC CHECKDB (master) executed by NT AUTHORITY\SYSTEM found 0 errors and repaired 0 errors. Elapsed time: 0 hours 0 minutes 0 seconds.
Au lieu de vérifier MyDb, il vérifiait master et msssqlsystemresource.
Pourquoi?
Ma solution est de créer un agent Sql Server Job avec ceci:
dbcc checkdb ('MyDb') with no_infomsgs, all_errormsgs;
qui fonctionne toujours bien.
08/15/2008 04:26:04,spid54,Unknown,DBCC CHECKDB (MyDb) WITH all_errormsgs<c/> no_infomsgs executed by NT AUTHORITY\SYSTEM found 0 errors and repaired 0 errors. Elapsed time: 0 hours 26 minutes 3 seconds.