私は開発への展開が本番環境に急速に近づいており、ログで約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。)
これが表示される理由:
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を実行しているのはなぜですか?