web-dev-qa-db-ja.com

DBCC CHECKDBが失敗してジョブを終了し、あいまいなエラーメッセージが表示されます

サーバーの1つ(Win Enterprise2008クラスター上のSQLServer 2008クラスター)DBCCCHECKDBが過去4回実行されたときに失敗しているという通知を受け取りました。それ以前のデータはありませんが、しばらくは成功していないようです。ログファイルのみにエラーはありません。

DBCC results for 'sys.sysxmlfacet'. [SQLSTATE 01000]
Msg 0, Sev 0, State 1: Unspecified error occurred on SQL Server. Connection may have been     terminated by the server. [SQLSTATE HY000]
There are 112 rows in 1 pages for object "sys.sysxmlfacet". [SQLSTATE 01000]

Sp_MSForEachDBを使用してDBCCCHECKDBを実行し、より正確な結果を取得しましたが、同じDBで同じエラーが発生しましたが、別のポイントで発生しました。

DBCC results for 'NameValuePair_Greek_CI_AS'. [SQLSTATE 01000]
Msg 0, Sev 0, State 1: Unspecified error occurred on SQL Server. Connection may have     been terminated by the server. [SQLSTATE HY000]
There are 0 rows in 0 pages for object "NameValuePair_Greek_CI_AS". [SQLSTATE 01000]

また、エラーログには、DBCCがこのデータベースのエラーなしで完了したことが示されます。

このサーバー上の数十のうち、このデータベースでのみ発生するこのあいまいな問題を追跡する方法がわかりません。どんな助けでも大歓迎です!

コメントに答えるために編集:
SQLServerエージェントを介してローカルで実行されています。私たちが考えた唯一のことは、DBが現在大きすぎるためにフェイルオーバーする可能性があるのはWin2008クラスター上にあるためです(880GBですが、同じハード/ソフトウェアで同じジョブを実行している他の多くのデータベースほど大きくはありません) 、しかし、接続の問題を取り除くフェイルオーバーが発生していることを示すものは何もありません。フェイルオーバーは通常、見逃しがたいほど多くのフラグと警告を送信します。データベースを分割することが次のトラブルシューティング手段になるかもしれませんが、それまでは、このジョブがなぜそれほど奇妙に実行されているのかを理解しようとしています。

3
Ddono25

エラーログにCHECKDBが完了したことが示されている場合は、完了しました。これは、CHECKDBが終了する前に実行する最後のことです。

これは、結果の印刷中のクライアントの問題のように見えます。 SQL Server2005の開発中にDBCCCHECKDBを作成していたとき、出力の行数に応じて、さまざまなクライアントでファンキーな問題が発生することがありました。 SSMSは、CHECKDBからの最初の1000エラーのみを出力します。それ以外の場合は、メモリが不足します。

試すべきいくつかのこと:

  1. wITH ALL_ERRORMSGS、NO_INFOMSGSを使用して実行します(これは、常に実行することをお勧めする方法です)
  2. sSMSの代わりにsqlcmdを使用して実行します

  3. sQLCMDから実行し、SQLCMD-oスイッチを使用して結果をファイルにパイプします

ありがとう

2
Paul Randal