web-dev-qa-db-ja.com

20〜60秒ごとに起動するDBCC CHECKDB

私は開発への展開が本番環境に急速に近づいており、ログで約20秒ごとにメッセージが表示されることに気づきました。

Starting up database 'dbname'
CHECKDB for database 'dbname' finished without errors

これをテストしているエンドユーザーがWindowsイベントログ(アプリケーションログ)で気付いたエラーに分離した問題を抱えていたため、これに気付きました。

The log for database 'dbname' is not available. Check event log for related messages.

ちなみに、関連するメッセージは見つかりませんでしたが、オフライン/オンラインサイクルで解決しました。

私が考えることができる唯一のことは、このアプリケーションは1msごとにデータを収集しますが、このデータのすべてがデータベースに挿入されないということです。開発サーバーであるため、ログとデータが同じドライブ上にあるように構成されました。これらの2つの情報を念頭に置いて、私はこれがIO問題であり、サーバーがストレージ(SAN)への接続の喪失から回復しようとしていることを知っています。これは、すべてのDBを失うわけではなく、これだけを失うので、私には意味がありません。

プラットフォーム:Windows Server 2008 R2(Std。)上のSQL Server 2008 R2(Ent。)

13
swasheck

これが表示される理由:

Starting up database 'dbname'
CHECKDB for database 'dbname' finished without errors

これは、データベースオプションがAutoCloseに設定されているためです。

AutoCloseをオフにするには、次のようにします。

alter database YourDatabase
set auto_close off
go

AutoCloseは、最後のユーザープロセスが切断された後にデータベースをシャットダウンします。そして、次のユーザー接続が接続を試みると、データベースは自動的に「reopens」になります。

通常、データベースを再度起動するまでのレイテンシが明らかであるため、AutoCloseをオフにしておくことをお勧めします。あなたの質問から、これは開発環境であることがわかりましたが、それも必要ありません(そして、実稼働環境では絶対に必要ありません)。

さらにDBCC CHECKDBは、実際には質問のタイトルごとに「20〜60秒ごとに実行」されるのではなく、そのまま表示されます。

SQL Server 2005以降、データベースが起動するたびに dbi_dbccLastKnownGood 値(存在する場合)がエラーログに報告されます。したがって、同じ履歴情報が繰り返し表示されるだけです。

このトピックは、記事 SQL Serverがサーバーの起動時にデータベースに対してDBCC CHECKDBを実行しているのはなぜですか?

22
Thomas Stringer