DBCC (Transact-SQL)DBCC (Transact-SQL)

適用対象:○SQL Server (2008 以降)○Azure SQL Database×Azure SQL Data Warehouse ×Parallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Transact-SQLTransact-SQL プログラミング言語には、 SQL ServerSQL Server のデータベース コンソール コマンドとして機能する DBCC ステートメントが用意されています。The Transact-SQLTransact-SQL programming language provides DBCC statements that act as Database Console Commands for SQL ServerSQL Server.

データベース コンソール コマンドは、次のように分類されます。Database Console Command statements are grouped into the following categories.

コマンドの分類Command category 実行内容Perform
メンテナンスMaintenance データベース、インデックスまたはファイル グループを対象とするメンテナンス タスク。Maintenance tasks on a database, index, or filegroup.
その他Miscellaneous トレース フラグの有効化やメモリからの DLL の削除など、その他のタスク。Miscellaneous tasks such as enabling trace flags or removing a DLL from memory.
情報提供Informational さまざまな種類の情報を収集および表示するタスク。Tasks that gather and display various types of information.
検証Validation データベース、テーブル、インデックス、カタログ、ファイル グループ、またはデータベース ページの割り当ての検証操作。Validation operations on a database, table, index, catalog, filegroup, or allocation of database pages.

DBCC コマンドは入力パラメーターをとり、値を返します。DBCC commands take input parameters and return values. すべての DBCC コマンド パラメーターには、Unicode と DBCS の両方のリテラルを使用できます。All DBCC command parameters can accept both Unicode and DBCS literals.

DBCC 内部データベース スナップショットの使用DBCC Internal Database Snapshot Usage

次の DBCC コマンドは、 データベース エンジンDatabase Engineで作成される内部の読み取り専用データベース スナップショットに対して実行でき、The following DBCC commands operate on an internal read-only database snapshot that the データベース エンジンDatabase Engine creates. これにより、コマンド実行時のブロックや同時実行の問題を回避できます。This prevents blocking and concurrency problems when these commands are executed. 詳細については、「データベース スナップショット (SQL Server)」を参照してください。For more information, see Database Snapshots (SQL Server).

  • DBCC CHECKALLOCDBCC CHECKALLOC
  • DBCC CHECKCATALOGDBCC CHECKCATALOG
  • DBCC CHECKDBDBCC CHECKDB
  • DBCC CHECKFILEGROUPDBCC CHECKFILEGROUP
  • DBCC CHECKTABLEDBCC CHECKTABLE

DBCC コマンドの 1 つを実行すると、 データベース エンジンDatabase Engine ではデータベース スナップショットが作成され、スナップショットはトランザクション全体で一貫性のある状態になります。When you execute one of these DBCC commands, the データベース エンジンDatabase Engine creates a database snapshot and brings it to a transactionally consistent state. その後、DBCC コマンドではこのスナップショットに対するチェックが行われます。The DBCC command then runs the checks against this snapshot. DBCC コマンドの完了後、このスナップショットは削除されます。After the DBCC command is completed, this snapshot is dropped.

内部データベース スナップショットが必要ではない場合や、内部データベース スナップショットを作成できない場合、Sometimes an internal database snapshot is not required or cannot be created. DBCC コマンドは実際のデータベースに対して実行されます。When this occurs, the DBCC command executes against the actual database. データベースがオンラインの場合、DBCC コマンドではテーブルロックを使用して、チェックするオブジェクトの一貫性を確保します。If the database is online, the DBCC command uses table-locking to ensure the consistency of the objects that it is checking. この動作は、WITH TABLOCK オプションが指定される場合と同じです。This behavior is the same as if the WITH TABLOCK option were specified.

次の条件で DBCC コマンドを実行する場合、内部データベース スナップショットは作成されません。An internal database snapshot is not created when a DBCC command is executed:

  • master に対して実行する場合で、 SQL ServerSQL Server インスタンスがシングル ユーザー モードで実行されている場合。Against master, and the instance of SQL ServerSQL Server is running in single-user mode.
  • master 以外のデータベースに対して実行する場合で、データベースが ALTER DATABASE ステートメントによってシングル ユーザー モードに設定されている場合。Against a database other than master, but the database has been put in single-user mode by using the ALTER DATABASE statement.
  • 読み取り専用データベースに対して実行する場合。Against a read-only database.
  • ALTER DATABASE ステートメントによって緊急モードに設定されたデータベースに対して実行する場合。Against a database that has been set in emergency mode by using the ALTER DATABASE statement.
  • tempdb に対して実行する場合。Against tempdb. この場合、内部的な制約のため、データベース スナップショットは作成できません。In this case, a database snapshot cannot be created because of internal restrictions.
  • WITH TABLOCK オプションを使用する場合。Using the WITH TABLOCK option. この場合、DBCC ではデータベース スナップショットは作成されず、要求が受け入れられます。In this case, DBCC honors the request by not creating a database snapshot.

DBCC コマンドを次の対象に実行する場合は、内部データベース スナップショットの代わりにテーブル ロックが使用されます。The DBCC commands use table locks instead of the internal database snapshots when the command is executed against the following:

  • 読み取り専用のファイル グループA read-only filegroup
  • FAT ファイル システムAn FAT file system
  • "名前付きストリーム" がサポートされないボリュームA volume that does not support 'named streams'
  • "代替ストリーム" がサポートされないボリュームA volume that does not support 'alternate streams'

注意

WITH TABLOCK オプションを使用して、DBCC CHECKALLOC を実行する場合、または DBCC CHECKDB の同様な機能を実行する場合は、データベースの排他 (X) ロックが必要です。Trying to run DBCC CHECKALLOC, or the equivalent part of DBCC CHECKDB, by using the WITH TABLOCK option requires a database X lock. このデータベース ロックは tempdb または master に対しては設定できず、他のすべてのデータベースでも失敗する可能性があります。This database lock cannot be set on tempdb or master and will probably fail on all other databases.

注意

DBCC CHECKDB を master に対して実行した場合、内部データベース スナップショットが作成できないと DBCC CHECKDB は失敗します。DBCC CHECKDB fails when it is run against master if an internal database snapshot cannot be created.

DBCC コマンドの進行状況レポートProgress Reporting for DBCC Commands

sys.dm_exec_requests カタログ ビューには、DBCC CHECKDB、DBCC CHECKFILEGROUP、DBCC CHECKTABLE コマンドの実行の進行状況と現在のフェーズについての情報が格納されます。The sys.dm_exec_requests catalog view contains information about the progress and the current phase of execution of the DBCC CHECKDB, CHECKFILEGROUP, and CHECKTABLE commands. percent_complete 列にはコマンドの完了率が示され、command 列にはコマンド実行の現在のフェーズがレポートされます。The percent_complete column indicates the percentage complete of the command, and the command column reports the current phase of the execution of the command.

レポートされる進行状況のレベルは、DBCC コマンド実行の現在のフェーズによって異なります。The definition of a unit of progress depends on the current phase of execution of the DBCC command. たとえば、フェーズによって、進行状況がデータベース ページ レベルでレポートされる場合と、データベース レベルまたはアロケーション修復レベルでレポートされる場合があります。Sometimes progress is reported at the granularity of a database page, in other phases it is reported at the granularity of a single database or allocation repair. 次の表は、実行の各フェーズと、コマンドでレポートされる進行状況のレベルです。The following table describes each phase of execution, and the granularity at which the command reports progress.

実行フェーズExecution phase [説明]Description 進行状況レポートの単位Progress reporting granularity
DBCC TABLE CHECKDBCC TABLE CHECK このフェーズでは、データベースのオブジェクトの論理的および物理的な一貫性がチェックされます。The logical and physical consistency of the objects in the database is checked during this phase. 進行状況はデータベース ページ レベルでレポートされます。Progress reported at the database page level.

進行状況レポートの値は、1,000 データベース ページがチェックされるたびに更新されます。The progress reporting value is updated for each 1000 database pages that are checked.
DBCC TABLE REPAIRDBCC TABLE REPAIR このフェーズでは、REPAIR_FAST、REPAIR_REBUILD、または REPAIR_ALLOW_DATA_LOSS が指定され、修復が必要なオブジェクト エラーがある場合に、データベース修復が実行されます。Database repairs are performed during this phase if REPAIR_FAST, REPAIR_REBUILD, or REPAIR_ALLOW_DATA_LOSS is specified, and there are object errors that must be repaired. 進行状況は個々の修復レベルでレポートされます。Progress reported at the individual repair level.

カウンターは修復が完了するたびに更新されます。The counter is updated for each repair that is completed.
DBCC ALLOC CHECKDBCC ALLOC CHECK このフェーズでは、データベースの割り当て構造がチェックされます。Allocation structures in the database are checked during this phase.

注: DBCC CHECKALLOC でも同じチェックが実行されます。Note: DBCC CHECKALLOC performs the same checks.
進行状況はレポートされません。Progress is not reported
DBCC ALLOC REPAIRDBCC ALLOC REPAIR このフェーズでは、REPAIR_FAST、REPAIR_REBUILD、または REPAIR_ALLOW_DATA_LOSS が指定され、修復が必要なアロケーション エラーがある場合に、データベース修復が実行されます。Database repairs are performed during this phase if REPAIR_FAST, REPAIR_REBUILD, or REPAIR_ALLOW_DATA_LOSS is specified, and there are allocation errors that must be repaired. 進行状況はレポートされません。Progress is not reported.
DBCC SYS CHECKDBCC SYS CHECK このフェーズでは、データベース システム テーブルがチェックされます。Database system tables are checked during this phase. 進行状況はデータベース ページ レベルでレポートされます。Progress reported at the database page level.

進行状況レポートの値は、1,000 データベース ページがチェックされるたびに更新されます。The progress reporting value is updated for every 1000 database pages that are checked.
DBCC SYS REPAIRDBCC SYS REPAIR このフェーズでは、REPAIR_FAST、REPAIR_REBUILD、または REPAIR_ALLOW_DATA_LOSS が指定され、修復が必要なシステム テーブル エラーがある場合に、データベース修復が実行されます。Database repairs are performed during this phase if REPAIR_FAST, REPAIR_REBUILD, or REPAIR_ALLOW_DATA_LOSS is specified, and there are system table errors that must be repaired. 進行状況は個々の修復レベルでレポートされます。Progress reported at the individual repair level.

カウンターは修復が完了するたびに更新されます。The counter is updated for each repair that is completed.
DBCC SSB CHECKDBCC SSB CHECK このフェーズでは、 SQL ServerSQL Server Service Broker オブジェクトがチェックされます。 SQL ServerSQL Server Service Broker objects are checked during this phase.

注: このフェーズは、DBCC CHECKTABLE を実行した場合は実行されません。Note: This phase is not executed when DBCC CHECKTABLE is executed.
進行状況はレポートされません。Progress is not reported.
DBCC CHECKCATALOGDBCC CHECKCATALOG このフェーズでは、データベース カタログの一貫性がチェックされます。The consistency of database catalogs are checked during this phase.

注: このフェーズは、DBCC CHECKTABLE を実行した場合は実行されません。Note: This phase is not executed when DBCC CHECKTABLE is executed.
進行状況はレポートされません。Progress is not reported.
DBCC IVIEW CHECKDBCC IVIEW CHECK このフェーズでは、データベースに存在するインデックス付きビューの論理的な一貫性がチェックされます。The logical consistency of any indexed views present in the database is checked during this phase. 進行状況は、チェックされたデータベース ビュー レベルでレポートされます。Progress reported at the level of the individual database view that is being checked.

情報ステートメントInformational Statements

DBCC INPUTBUFFERDBCC INPUTBUFFER DBCC SHOWCONTIGDBCC SHOWCONTIG
DBCC OPENTRANDBCC OPENTRAN DBCC SQLPERFDBCC SQLPERF
DBCC OUTPUTBUFFERDBCC OUTPUTBUFFER DBCC TRACESTATUSDBCC TRACESTATUS
DBCC PROCCACHEDBCC PROCCACHE DBCC USEROPTIONSDBCC USEROPTIONS
DBCC SHOW_STATISTICSDBCC SHOW_STATISTICS

検証ステートメントValidation Statements

DBCC CHECKALLOCDBCC CHECKALLOC DBCC CHECKFILEGROUPDBCC CHECKFILEGROUP
DBCC CHECKCATALOGDBCC CHECKCATALOG DBCC CHECKIDENTDBCC CHECKIDENT
DBCC CHECKCONSTRAINTSDBCC CHECKCONSTRAINTS DBCC CHECKTABLEDBCC CHECKTABLE
DBCC CHECKDBDBCC CHECKDB

メンテナンス ステートメントMaintenance Statements

DBCC CLEANTABLEDBCC CLEANTABLE DBCC INDEXDEFRAGDBCC INDEXDEFRAG
DBCC DBREINDEXDBCC DBREINDEX DBCC SHRINKDATABASEDBCC SHRINKDATABASE
DBCC DROPCLEANBUFFERSDBCC DROPCLEANBUFFERS DBCC SHRINKFILEDBCC SHRINKFILE
DBCC FREEPROCCACHEDBCC FREEPROCCACHE DBCC UPDATEUSAGEDBCC UPDATEUSAGE

その他のステートメントMiscellaneous Statements

DBCC dllname (FREE)DBCC dllname (FREE) DBCC HELPDBCC HELP
DBCC FLUSHAUTHCACHEDBCC FLUSHAUTHCACHE DBCC TRACEOFFDBCC TRACEOFF
DBCC FREESESSIONCACHEDBCC FREESESSIONCACHE DBCC TRACEONDBCC TRACEON
DBCC FREESYSTEMCACHEDBCC FREESYSTEMCACHE DBCC CLONEDATABASEDBCC CLONEDATABASE

適用対象: SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 から SQL Server 2017SQL Server 2017Applies to: SQL Server 2014 (12.x)SQL Server 2014 (12.x) SP2 through SQL Server 2017SQL Server 2017.