0

これは、私以外の人が抱えている問題で、適切な説明が見つかりませんでした。

次のようなデータベースをチェックするタスクを含むメンテナンス プランがあるとします。

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 Agent ジョブを作成することです。

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.
4

3 に答える 3

1

メンテナンス プランを使用している場合は、データベースの整合性チェック タスクを使用することをお勧めします。t-sql で記述された独自のメンテナンスを本当に実行したい場合は、メンテナンス プランではなくジョブのステップを使用して実行すると、上記のコードは問題なく動作します。Stuが言ったように、GOステートメントはsqlキーワードではなくクライアントディレクティブであり、isql、wsql、osqlなど、クライアント、およびsqlエージェントによってのみ尊重されるようです。DTS パッケージで動作すると思います。明らかに、DTSX ではありません。

于 2008-08-15T15:34:09.180 に答える
1

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

于 2008-08-15T15:00:16.380 に答える
0

データベースの整合性をチェックするタスクがあり、それをダブルクリックして MyDb を選択し、プランを実行すると master のみがチェックされますか?? 変。別の計画を実行していませんか?

于 2008-08-15T19:22:39.093 に答える