2008-08-15 7 views
0

これは自分自身以外にも他の人にも見られている問題で、良い説明は見つけられていません。SQL Server 2005保守計画でdbcc checkdbに間違ったデータベースが使用されるのはなぜですか?

このような何か、あなたは、データベースをチェックするタスクと保守計画を持っているとしましょう:

:タスクの実行後にログに見に行く場合は、あなたがこのようなものが表示される場合があります

USE [MyDb] 
GO 
DBCC CHECKDB with no_infomsgs, all_errormsgs 

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. 

MyDbをチェックする代わりに、masterとmsssqlsystemresourceをチェックしました。

なぜですか?

私の回避策は、これでSQL Serverエージェントジョブを作成することです:常に正常に動作します

dbcc checkdb ('MyDb') with no_infomsgs, all_errormsgs; 

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. 

答えて

1

最初に、GOはSQLキーワードではないことに注意してください。それは単なるバッチセパレーターであり、(一般的に)サーバーではなくクライアントによって実装/認識されます。したがって、コンテキストとクライアントによっては、現在のデータベースがバッチ間で保持される保証はありません。

1

メンテナンスプランを使用している場合は、データベースの整合性チェックタスクの使用をお勧めします。あなたが本当にt-SQLで書かれたメンテナンスを実行したいのであれば、保守計画ではなく、ジョブのステップを使ってメンテナンスを実行してください。上記のコードは正常に動作します。 Stuのように、GO文はSQLのキーワードではなく、isql、wsql、osqlなどのクライアントとSQLエージェントによって尊重されているように見えます。私はそれがDTSパッケージで動作すると思います。もちろん、DTSXではありません。

0

データベースの整合性チェックタスクがあり、それをダブルクリックしてMyDbを選択し、プランが実行されているときにマスターのみをチェックしますか?奇妙な。別の計画を実行していないと確信していますか?

関連する問題