私は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で何がめちゃくちゃになって、永久に時間がかかるのでしょうか。
CHECKDB操作がFT CRAWL
によってブロックされている場合、適切な解決策は、データベースが復元された後でデータベースの全文検索をオフにすることです。結局のところ、DBCC CHECKDBを使用して全文検索が正しく行われていることを検証したり、FTクエリを容易にするためにデータベースのこのコピーを復元したりするわけではありません。
foo
という名前のデータベースの全文検索を無効にするには:
IF FULLTEXTSERVICEPROPERTY('IsFullTextInstalled') = 1
BEGIN
EXEC foo.dbo.sp_fulltext_database @action = 'disable';
END
FTがインストールされていることはすでにわかっているので、おそらく条件式は必要ありませんが、このサーバーが変更された場合や、復元を別の場所に移動した場合に備えて、持ち歩きを行うことをお勧めします。