web-dev-qa-db-ja.com

長時間実行されるDBCC CHECKDB

私はSQL 2014 Standardを使用してオフラインのDBCC CHECKDBを実行しています(本番環境以外のボックスで)。ほとんどの場合、私のプロセスはかなり速く進んでいますが、何らかの理由でこの小さなDB(6GB)があり、DBCCを実行するのに何時間もかかります。前回実行したときは9時間かかりました。 sys.dm_exec_requestsをチェックすると、異なる%の完了時にフリーズするようです。この同じサーバーで、テラバイト範囲のデータベースで問題なくCHECKDBを実行しています。現在、CHECKDBで次のヒントを使用しています(そして、はい、結局、物理的なものだけではなく、完全に実行します)

WITH NO_INFOMSGS, ALL_ERRORMSGS, PHYSICAL_ONLY, TABLOCK

この1つのDBで何がめちゃくちゃになって、永久に時間がかかるのでしょうか。

4
Chris Woods

CHECKDB操作がFT CRAWLによってブロックされている場合、適切な解決策は、データベースが復元された後でデータベースの全文検索をオフにすることです。結局のところ、DBCC CHECKDBを使用して全文検索が正しく行われていることを検証したり、FTクエリを容易にするためにデータベースのこのコピーを復元したりするわけではありません。

fooという名前のデータベースの全文検索を無効にするには:

IF FULLTEXTSERVICEPROPERTY('IsFullTextInstalled') = 1
BEGIN
  EXEC foo.dbo.sp_fulltext_database @action = 'disable';
END

FTがインストールされていることはすでにわかっているので、おそらく条件式は必要ありませんが、このサーバーが変更された場合や、復元を別の場所に移動した場合に備えて、持ち歩きを行うことをお勧めします。

3
Aaron Bertrand