DBCC (Transact-SQL)
適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Transact-SQL プログラミング言語には、SQL Server のデータベース コンソール コマンドとして機能する DBCC ステートメントが用意されています。
データベース コンソール コマンドは、次のように分類されます。
コマンドのカテゴリ | 実行内容 |
---|---|
メンテナンス | データベース、インデックスまたはファイル グループを対象とするメンテナンス タスク。 |
その他 | トレース フラグの有効化やメモリからの DLL の削除など、その他のタスク。 |
Informational | さまざまな種類の情報を収集および表示するタスク。 |
検証 | データベース、テーブル、インデックス、カタログ、ファイル グループ、またはデータベース ページの割り当ての検証操作。 |
DBCC コマンドは入力パラメーターをと受け取り、値を返します。 すべての DBCC コマンド パラメーターには、Unicode と DBCS の両方のリテラルを使用できます。
DBCC 内部データベース スナップショットの使用
次の DBCC コマンドは、データベース エンジンで作成される内部の読み取り専用データベース スナップショットに対して実行でき、 このスナップショットにより、コマンド実行時のブロックやコンカレンシーの問題を回避できます。 詳細については、「データベース スナップショット (SQL Server)」を参照してください。
DBCC CHECKALLOC
DBCC CHECKCATALOG
DBCC CHECKDB
DBCC CHECKFILEGROUP
DBCC CHECKTABLE
DBCC コマンドの 1 つを実行すると、データベース エンジン ではデータベース スナップショットが作成され、スナップショットはトランザクション全体で一貫性のある状態になります。 その後、DBCC コマンドではこのスナップショットに対するチェックが行われます。 DBCC コマンドの完了後、このスナップショットは削除されます。
場合によっては、内部データベース スナップショットが必要ではないか作成できないことがあります。 DBCC コマンドは実際のデータベースに対して実行されます。 データベースがオンラインの場合、DBCC コマンドではテーブルロックを使用して、チェックするオブジェクトの一貫性を確保します。 この動作は、WITH TABLOCK
オプションが指定される場合と同じです。
次の条件で DBCC コマンドを実行する場合、内部データベース スナップショットは作成されません。
-
master
データベースに対して実行し、SQL Server のインスタンスがシングル ユーザー モードで実行されている場合。 -
master
以外のデータベースに対して実行するが、データベースがALTER DATABASE
ステートメントを使ってシングル ユーザー モードに設定されている場合。 - 読み取り専用データベースに対して実行する場合。
-
ALTER DATABASE
ステートメントを使って緊急モードに設定されたデータベースに対して実行する場合。 -
tempdb
に対して実行する場合。 この場合、内部的な制約のため、データベース スナップショットは作成できません。 -
WITH TABLOCK
オプションを使用する。 この場合、DBCC ではデータベース スナップショットは作成されず、要求が受け入れられます。
DBCC コマンドを次の対象に実行する場合は、内部データベース スナップショットの代わりにテーブル ロックが使用されます。
- 読み取り専用のファイル グループ
- FAT ファイル システム
- "名前付きストリーム" がサポートされないボリューム
- "代替ストリーム" がサポートされないボリューム
Note
DBCC CHECKALLOC
オプションを使用して、DBCC CHECKDB
、または WITH TABLOCK
と同等の部分を実行してみる場合、データベースの排他 (X
) ロックが必要です。 このデータベース ロックは tempdb
または master
に対しては設定できず、他のすべてのデータベースでも失敗する可能性があります。
Note
DBCC CHECKDB
に対して実行した場合、内部データベース スナップショットが作成できないと master
は失敗します。
DBCC コマンドの進行状況レポート
sys.dm_exec_requests
カタログ ビューには、DBCC CHECKDB
、CHECKFILEGROUP
、CHECKTABLE
コマンドの実行の進行状況と現在のフェーズについての情報が含まれます。
percent_complete
列にはコマンドの完了率が示され、command
列にはコマンド実行の現在のフェーズがレポートされます。
レポートされる進行状況のレベルは、DBCC コマンド実行の現在のフェーズによって異なります。 たとえば、フェーズによって、進行状況がデータベース ページ レベルでレポートされる場合と、データベース レベルまたはアロケーション修復レベルでレポートされる場合があります。 次の表は、実行の各フェーズと、コマンドでレポートされる進行状況のレベルです。
実行フェーズ | 説明 | 進行状況レポートの単位 |
---|---|---|
DBCC TABLE CHECK |
このフェーズでは、データベースのオブジェクトの論理的および物理的な一貫性がチェックされます。 | 進行状況はデータベース ページ レベルでレポートされます。 進行状況レポートの値は、1,000 データベース ページがチェックされるたびに更新されます。 |
DBCC TABLE REPAIR |
このフェーズでは、REPAIR_FAST 、REPAIR_REBUILD 、または REPAIR_ALLOW_DATA_LOSS が指定され、修復が必要なオブジェクト エラーがある場合に、データベース修復が実行されます。 |
進行状況は個々の修復レベルでレポートされます。 カウンターは修復が完了するたびに更新されます。 |
DBCC ALLOC CHECK |
このフェーズでは、データベースの割り当て構造がチェックされます。 注: DBCC CHECKALLOC は同じチェックを実行します。 |
進行状況が報告されない |
DBCC ALLOC REPAIR |
このフェーズでは、REPAIR_FAST 、REPAIR_REBUILD 、または REPAIR_ALLOW_DATA_LOSS が指定され、修復が必要な割り当てエラーがある場合に、データベース修復が実行されます。 |
進行状況は報告されません。 |
DBCC SYS CHECK |
このフェーズでは、データベース システム テーブルがチェックされます。 | 進行状況はデータベース ページ レベルでレポートされます。 進行状況レポートの値は、1,000 データベース ページがチェックされるたびに更新されます。 |
DBCC SYS REPAIR |
このフェーズでは、REPAIR_FAST 、REPAIR_REBUILD 、または REPAIR_ALLOW_DATA_LOSS が指定され、修復が必要なシステム テーブル エラーがある場合に、データベース修復が実行されます。 |
進行状況は個々の修復レベルでレポートされます。 カウンターは修復が完了するたびに更新されます。 |
DBCC SSB CHECK |
このフェーズでは、SQL Server Service Broker オブジェクトがチェックされます。 注: このフェーズは、 DBCC CHECKTABLE を実行した場合は実行されません。 |
進行状況は報告されません。 |
DBCC CHECKCATALOG |
このフェーズでは、データベース カタログの一貫性がチェックされます。 注: このフェーズは、 DBCC CHECKTABLE を実行した場合は実行されません。 |
進行状況は報告されません。 |
DBCC IVIEW CHECK |
このフェーズでは、データベースに存在するインデックス付きビューの論理的な一貫性がチェックされます。 | 進行状況は、チェックされたデータベース ビュー レベルでレポートされます。 |
情報ステートメント
- DBCC INPUTBUFFER
- DBCC SHOWCONTIG
- DBCC OPENTRAN
- DBCC OUTPUTBUFFER
- DBCC PROCCACHE
- DBCC SHOW_STATISTICS
- DBCC SQLPERF
- DBCC TRACESTATUS
- DBCC USEROPTIONS
検証ステートメント
- DBCC CHECKALLOC
- DBCC CHECKCATALOG
- DBCC CHECKCONSTRAINTS
- DBCC CHECKDB
- DBCC CHECKFILEGROUP
- DBCC CHECKIDENT
- DBCC CHECKTABLE
メンテナンス ステートメント
- DBCC CLEANTABLE
- DBCC DBREINDEX
- DBCC DROPCLEANBUFFERS
- DBCC FREEPROCCACHE
- DBCC INDEXDEFRAG
- DBCC SHRINKDATABASE
- DBCC SHRINKFILE
- DBCC UPDATEUSAGE
その他のステートメント
- DBCC dllname (FREE)
- DBCC HELP
- DBCC FLUSHAUTHCACHE
- DBCC TRACEOFF
- DBCC FREESESSIONCACHE
- DBCC TRACEON
- DBCC FREESYSTEMCACHE
- DBCC CLONEDATABASE (適用対象: SQL Server 2014 (12.x) Service Pack 2 以降のバージョン)