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

適用対象: ○SQL Server ○Azure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

現在のデータベースで、指定されたファイル グループのすべてのテーブルおよびインデックス付きビューの割り当てと構造的整合性をチェックします。Checks the allocation and structural integrity of all tables and indexed views in the specified filegroup of the current database. トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

  
DBCC CHECKFILEGROUP   
[  
    [ ( { filegroup_name | filegroup_id | 0 }   
        [ , NOINDEX ]   
  ) ]  
    [ WITH   
        {   
            [ ALL_ERRORMSGS | NO_INFOMSGS ]   
            [ , TABLOCK ]   
            [ , ESTIMATEONLY ]  
            [ , PHYSICAL_ONLY ]    
            [ , MAXDOP  = number_of_processors ]  
        }   
    ]  
]  

引数Arguments

filegroup_namefilegroup_name
現在のデータベースで、テーブルの割り当てと構造的整合性をチェックするファイル グループの名前を指定します。Is the name of the filegroup in the current database for which to check table allocation and structural integrity. 指定しない場合、または 0 を指定した場合、既定はプライマリ ファイル グループとなります。If not specified, or if 0 is specified, the default is the primary filegroup. ファイル グループ名は、識別子の規則に従っている必要があります。Filegroup names must comply with the rules for identifiers.
filegroup_name に FILESTREAM ファイル グループは指定できません。filegroup_name cannot be a FILESTREAM filegroup.

filegroup_idfilegroup_id
現在のデータベースで、テーブルの割り当てと構造的整合性をチェックするファイル グループの ID 番号を指定します。Is the filegroup identification (ID) number in the current database for which to check table allocation and structural integrity.

NOINDEXNOINDEX
ユーザー テーブルの非クラスター化インデックスの集中チェックを実行しないように指定します。Specifies that intensive checks of nonclustered indexes for user tables should not be performed. これにより、全体の実行時間が短縮されます。This decreases the overall execution time. DBCC CHECKFILEGROUP は、常にすべてのシステム テーブルのインデックスをチェックするため、NOINDEX はシステム テーブルには影響を与えません。NOINDEX does not affect system tables because DBCC CHECKFILEGROUP always checks all system table indexes.

ALL_ERRORMSGSALL_ERRORMSGS
オブジェクトごとにエラーを無制限に表示します。Displays an unlimited number of errors per object. 既定では、すべてのエラー メッセージが表示されます。All error messages are displayed by default. このオプションを指定しても省略しても影響はありません。Specifying or omitting this option has no effect.

NO_INFOMSGSNO_INFOMSGS
すべての情報メッセージを表示しないようにします。Suppresses all informational messages.

TABLOCKTABLOCK
DBCC CHECKFILEGROUP が、内部データベースのスナップショットを使用するのではなく、ロックを取得します。Causes DBCC CHECKFILEGROUP to obtain locks instead of using an internal database snapshot.

ESTIMATE ONLYESTIMATE ONLY
必要な他のオプションをすべて指定した状態で、DBCC CHECKFILEGROUP の実行時に必要となる tempdb 領域の予測サイズを表示します。Displays the estimated amount of tempdb space required to run DBCC CHECKFILEGROUP with all the other specified options.

PHYSICAL_ONLYPHYSICAL_ONLY
チェック内容を、ページ、レコード ヘッダー、および B ツリーの物理構造の整合性に限定します。Limits the checking to the integrity of the physical structure of the page, record headers and the physical structure of B-trees. ファイル グループの物理的一貫性に関する低オーバーヘッド チェックを提供するように設計されているため、このチェックではデータが損傷する可能性のある破損ページおよび一般的なハードウェア障害も検出できます。Designed to provide a small overhead check of the physical consistency of the filegroup, this check can also detect torn pages, and common hardware failures that can compromise data. 完全な DBCC CHECKFILEGROUP を実行すると、以前のバージョンよりはるかに時間がかかることがあります。A full run of DBCC CHECKFILEGROUP may take considerably longer than in earlier versions. この現象は次の原因により発生します。This behavior occurs because of the following reasons:

  • 論理チェックの対象範囲が広がった。The logical checks are more comprehensive.
  • チェック対象の、基になる構造の一部が複雑になった。Some of the underlying structures to be checked are more complex.
  • 新機能を含めるために多数の新しいチェックが導入された。Many new checks have been introduced to include the new features.
    したがって、大規模なファイル グループでは、PHYSICAL_ONLY オプションを使用すると DBCC CHECKFILEGROUP の実行時間が大幅に短縮されることがあるため、実稼働システムで頻繁に使用する場合はこのオプションを使用することをお勧めします。Therefore, using the PHYSICAL_ONLY option may cause a much shorter run-time for DBCC CHECKFILEGROUP on large filegroups and is therefore recommended for frequent use on production systems. ただし、完全な DBCC CHECKFILEGROUP を定期的に実行することもお勧めします。We still recommend that a full run of DBCC CHECKFILEGROUP be performed periodically. 実行する頻度は、それぞれの業務環境や運用環境に固有の要因によって異なります。The frequency of these runs depends on factors specific to individual businesses and production environments. PHYSICAL_ONLY を指定した場合は常に NO_INFOMSGS も暗黙的に指定されるため、修復オプションを同時指定することはできません。PHYSICAL_ONLY always implies NO_INFOMSGS and is not allowed with any one of the repair options.

注意

PHYSICAL_ONLY を指定すると、DBCC CHECKFILEGROUP で FILESTREAM データのチェックがすべてスキップされるようになります。Specifying PHYSICAL_ONLY causes DBCC CHECKFILEGROUP to skip all checks of FILESTREAM data.

MAXDOPMAXDOP
適用対象:SQL ServerSQL Server 2014 SP2 から現在のバージョンApplies to: SQL ServerSQL Server 2014 SP2 through current version.

ステートメントの sp_configuremax degree of parallelism 構成オプションをオーバーライドします。Overrides the max degree of parallelism configuration option of sp_configure for the statement. MAXDOP では、sp_configure で構成されている値を超えることができます。The MAXDOP can exceed the value configured with sp_configure. MAXDOP では、Resource Governor で構成されている値を超えると、データベース エンジンは、「ALTER WORKLOAD GROUP (TRANSACT-SQL)」に記載のリソース ガバナーの MAXDOP 値を使用します。If MAXDOP exceeds the value configured with Resource Governor, the Database Engine uses the Resource Governor MAXDOP value, described in ALTER WORKLOAD GROUP (Transact-SQL). MAXDOP クエリ ヒントを使用している場合は、max degree of parallelism 構成オプションで使用されるすべての意味ルールを適用できます。All semantic rules used with the max degree of parallelism configuration option are applicable when you use the MAXDOP query hint. 詳細については、「 max degree of parallelism サーバー構成オプションの構成」を参照してください。For more information, see Configure the max degree of parallelism Server Configuration Option.

注意事項

MAXDOP が 0 に設定されている場合、サーバーでは最大限の並列処理が実行されます。If MAXDOP is set to zero then the server chooses the max degree of parallelism.

RemarksRemarks

DBCC CHECKFILEGROUP と DBCC CHECKDB はほぼ同じ DBCC コマンドです。DBCC CHECKFILEGROUP and DBCC CHECKDB are similar DBCC commands. 主な相違点は、DBCC CHECKFILEGROUP の対象が、指定された単一のファイル グループと必要なテーブルのみに限定されることです。The main difference is that DBCC CHECKFILEGROUP is limited to the single specified filegroup and required tables. DBCC CHECKFILEGROUP は次のコマンドを実行します。DBCC CHECKFILEGROUP performs the following commands:

DBCC CHECKALLOC または DBCC CHECKTABLE を DBCC CHECKFILEGROUP と分けて実行する必要はありません。Running DBCC CHECKALLOC or DBCC CHECKTABLE separately from DBCC CHECKFILEGROUP is not required.

内部データベース スナップショットInternal Database Snapshot

DBCC CHECKFILEGROUP は、内部データベースのスナップショットを使用して、これらのチェックを実行するために必要なトランザクションの一貫性を実現します。DBCC CHECKFILEGROUP uses an internal database snapshot to provide the transactional consistency that it must have to perform these checks. 詳細については、次を参照してください。「データベース スナップショットのスパース ファイルのサイズを表示する方法 (Transact-SQL)」および「DBCC (Transact-SQL)」の「DBCC 内部データベース スナップショットの使用」セクション。For more information, see View the Size of the Sparse File of a Database Snapshot (Transact-SQL) and the "DBCC Internal Database Snapshot Usage" section in DBCC (Transact-SQL). スナップショットを作成できない場合や TABLOCK オプションが指定されている場合、DBCC CHECKFILEGROUP はロックを取得して必要な一貫性を実現します。If a snapshot cannot be created, or the TABLOCK option is specified, DBCC CHECKFILEGROUP acquires locks to obtain the required consistency. この場合、割り当てのチェックを行うための排他データベース ロックと、テーブルのチェックを行うための共有テーブル ロックが必要です。In this case, an exclusive database lock is required to perform the allocation checks, and shared table locks are required to perform the table checks. TABLOCK の作用によって負荷の高いデータベースでも DBCC CHECKFILEGROUP の実行速度が速くなりますが、DBCC CHECKFILEGROUP の実行中、データベースでのコンカレンシーは低下します。TABLOCK causes DBCC CHECKFILEGROUP to run faster on a database under heavy load, but decreases the concurrency available on the database while DBCC CHECKFILEGROUP is running.

注意

tempdb に対して DBCC CHECKFILEGROUP を実行しても、割り当てのチェックは行われず、共有テーブル ロックを取得してテーブルのチェックを行う必要があります。Running DBCC CHECKFILEGROUP against tempdb does not perform any allocation checks and must acquire shared table locks to perform table checks. これは、パフォーマンス上の理由から、データベースのスナップショットが tempdb では利用できないためです。This is because, for performance reasons, database snapshots are not available on tempdb. つまり、必要なトランザクションの一貫性を実現できないためです。This means that the required transactional consistency cannot be obtained.

オブジェクトの並列チェックChecking Objects in Parallel

既定では、DBCC CHECKFILEGROUP はオブジェクトの並列チェックを実行します。By default, DBCC CHECKFILEGROUP performs parallel checking of objects. 並列処理の次数は、クエリ プロセッサによって自動的に決定されます。The degree of parallelism is automatically determined by the query processor. 並列処理の次数の最大値は、並列クエリと同様に構成します。The maximum degree of parallelism is configured just like parallel queries. DBCC チェックに利用できるプロセッサの最大数を制限するには、sp_configure を使用します。To restrict the maximum number of processors available for DBCC checking, use sp_configure. 詳細については、「 max degree of parallelism サーバー構成オプションの構成」を参照してください。For more information, see Configure the max degree of parallelism Server Configuration Option. 並列チェックはトレース フラグ 2528 を使用して無効にできます。Parallel checking can be disabled by using trace flag 2528. 詳細については、「トレース フラグ (Transact-SQL)」を参照してください。For more information, see Trace Flags (Transact-SQL).

異なるファイル グループの非クラスター化インデックスNonclustered Indexes on Separate Filegroups

指定したファイル グループ内の非クラスター化インデックスが、別のファイル グループ内のテーブルに関連付けられている場合、ベース テーブルが検証できないので、インデックスはチェックされません。If a nonclustered index in the specified filegroup is associated with a table in another filegroup, the index is not checked because the base table is not available for validation. 指定したファイル グループ内のテーブルに対応する非クラスター化インデックスが、別のファイル グループ内にある場合、その非クラスター化インデックスは次の理由によりチェックされません。If a table in the specified filegroup has a nonclustered index in another filegroup, the nonclustered index is not checked because of the following:

  • ベース テーブル構造は非クラスター化インデックスの構造に依存しません。The base table structure is not dependent on the structure of a nonclustered index. ベース テーブルを検証するために、非クラスター化インデックスをスキャンする必要はありません。Nonclustered indexes do not have to be scanned to validate the base table.
  • DBCC CHECKFILEGROUP コマンドでは、指定したファイル グループのみでオブジェクトが検証されます。The DBCC CHECKFILEGROUP command validates objects only in the specified filegroup.
    クラスター化インデックスおよびテーブルは異なるファイル グループに配置されないため、上記の注意事項は、非クラスター化インデックスにのみ適用されます。A clustered index and a table cannot be on different filegroups; therefore, the previous considerations apply only to nonclustered indexes.

異なるファイル グループのパーティション テーブルPartitioned Tables on Separate Filegroups

パーティション テーブルが複数のファイル グループに分散している場合、DBCC CHECKFILEGROUP によってチェックされるのは指定したファイル グループに存在しているパーティション行セットのみで、他のファイル グループの行セットは無視されます。When a partitioned table exists on multiple filegroups, DBCC CHECKFILEGROUP checks the partition rowsets that exist on the specified filegroup and ignores the rowsets in the other filegroups. チェックされなかったパーティションは、情報メッセージ 2594 に示されます。Informational message 2594 indicates the partitions that were not checked. 指定したファイル グループにない非クラスター化インデックスはチェックされません。Nonclustered indexes not resident on the specified filegroup are not checked.

DBCC エラー メッセージについてUnderstanding DBCC Error Messages

DBCC CHECKFILEGROUP コマンドの終了後、メッセージが SQL ServerSQL Server エラー ログに書き込まれます。After the DBCC CHECKFILEGROUP command finishes, a message is written to the SQL ServerSQL Server error log. DBCC コマンドが正常に実行された場合、メッセージでは正常完了とコマンド実行時間が示されます。If the DBCC command successfully executes, the message indicates a successful completion and the amount of time that the command ran. エラーが発生して DBCC コマンドが完了前に停止した場合、メッセージではコマンドが終了したことと、状態の値、コマンド実行時間が示されます。If the DBCC command stops before completing the check because of an error, the message indicates the command was terminated, a state value, and the amount of time the command ran. 次の表は、メッセージに含まれる可能性がある状態値の一覧と説明です。The following table lists and describes the state values that can be included in the message.

状態State [説明]Description
00 エラー番号 8930 が発生しました。Error number 8930 was raised. メタデータの破損が原因で DBCC コマンドが終了しました。This indicates a metadata corruption that caused the DBCC command to terminate.
11 エラー番号 8967 が発生しました。Error number 8967 was raised. 内部 DBCC エラーがあります。There was an internal DBCC error.
22 緊急モードのデータベース修復中にエラーが発生しました。A failure occurred during emergency mode database repair.
33 メタデータの破損が原因で DBCC コマンドが終了しました。This indicates a metadata corruption that caused the DBCC command to terminate.
44 アサートまたはアクセス違反が検出されました。An assert or access violation was detected.
55 不明なエラーが発生し、DBCC コマンドが終了しました。An unknown error occurred that terminated the DBCC command.

[エラー報告]Error Reporting

DBCC CHECKFILEGROUP で破損エラーが検出されるたびに、ミニ ダンプ ファイル (SQLDUMPnnnn.txt) が SQL ServerSQL Server の LOG ディレクトリに作成されます。A mini-dump file (SQLDUMPnnnn.txt) is created in the SQL ServerSQL Server LOG directory whenever DBCC CHECKFILEGROUP detects a corruption error. 機能の使用状況データ収集とエラー報告機能が SQL ServerSQL Server インスタンスに対して有効になっている場合、ダンプ ファイルは自動的に MicrosoftMicrosoft に転送されます。When the Feature Usage data collection and Error Reporting features are enabled for the instance of SQL ServerSQL Server, the file is automatically forwarded to MicrosoftMicrosoft. 収集されたデータは SQL ServerSQL Server の機能向上のために使用されます。The collected data is used to improve SQL ServerSQL Server functionality. このダンプ ファイルには、DBCC CHECKFILEGROUP コマンドの結果と追加の診断出力が含まれます。The dump file contains the results of the DBCC CHECKFILEGROUP command and additional diagnostic output. また、制限付きの随意アクセス制御リスト (DACL) が割り当てられます。The file has restricted discretionary access-control lists (DACLs). アクセスが、SQL ServerSQL Server サービス アカウントと sysadmin ロールのメンバーに制限されます。Access is limited to the SQL ServerSQL Server service account and members of the sysadmin role. 既定では、sysadmin ロールには Windows の BUILTIN\Administrators グループとローカルの管理者グループのすべてのメンバーが含まれます。By default, the sysadmin role contains all members of the Windows BUILTIN\Administrators group and the local administrator's group. データ収集プロセスが失敗しても、DBCC コマンドは失敗しません。The DBCC command does not fail if the data collection process fails.

エラーの解決Resolving Errors

DBCC CHECKFILEGROUP によってエラーが報告される場合は、データベース バックアップからデータベースを復元することをお勧めします。If any errors are reported by DBCC CHECKFILEGROUP, we recommend restoring the database from the database backup. DBCC CHECKFILEGROUP に修復オプションを指定することはできません。Note that repair options cannot be specified to DBCC CHECKFILEGROUP. バックアップが存在しない場合、指定した修復オプションで DBCC CHECKDB を実行することによって、報告されたエラーを修正します。If no backup exists, running DBCC CHECKDB with a repair option specified corrects the errors reported. 使用する修復オプションは、報告されたエラーの一覧の最後に指定されています。The repair option to use is specified at the end of the list if reported errors. REPAIR_ALLOW_DATA_LOSS オプションを使用してエラーを修正する場合は、一部のページ (データ) が削除されることがあります。Correcting the errors by using the REPAIR_ALLOW_DATA_LOSS option might require that some pages, and therefore data, be deleted.

結果セットResult Sets

DBCC CHECKFILEGROUP は次の結果セットを返します (値は異なることがあります)。DBCC CHECKFILEGROUP returns the following result set (values may vary):

  • ESTIMATEONLY または NO_INFOMSGS が指定されている場合は除きます。Except when ESTIMATEONLY or NO_INFOMSGS is specified.
  • データベースが指定されていない場合は、オプション (NOINDEX を除く) が指定されているかどうかに関係なく、現在のデータベースが対象になります。For the current database, if no database is specified, whether or not any options (except NOINDEX) are specified.
DBCC results for 'master'.  
DBCC results for 'sys.sysrowsetcolumns'.  
There are 630 rows in 7 pages for object 'sys.sysrowsetcolumns'.  
DBCC results for 'sys.sysrowsets'.  
There are 97 rows in 1 pages for object 'sys.sysrowsets'.  
DBCC results for 'sysallocunits'.  
There are 195 rows in 3 pages for object 'sysallocunits'.  
  
There are 2340 rows in 16 pages for object 'spt_values'.  
DBCC results for 'MSreplication_options'.  
There are 2 rows in 1 pages for object 'MSreplication_options'.  
CHECKFILEGROUP found 0 allocation errors and 0 consistency errors in database 'master'.  
DBCC execution completed. If DBCC printed error messages, contact your system administrator.  

NO_INFOMSGS が指定されている場合、DBCC CHECKFILEGROUP は次の結果セットを返します。If NO_INFOMSGS is specified, DBCC CHECKFILEGROUP returns:

DBCC execution completed. If DBCC printed error messages, contact your system administrator.  

ESTIMATEONLY が指定されている場合、DBCC CHECKFILEGROUP は次の結果セットを返します (値は異なることがあります)。If ESTIMATEONLY is specified, DBCC CHECKFILEGROUP returns (values may vary):

Estimated TEMPDB space needed for CHECKALLOC (KB)
-------------------------------------------------   
15  
  
(1 row(s) affected)  
  
Estimated TEMPDB space needed for CHECKTABLES (KB)   
--------------------------------------------------   
207  
  
(1 row(s) affected)  
  
DBCC execution completed. If DBCC printed error messages, contact your system administrator.  

アクセス許可Permissions

sysadmin 固定サーバー ロールまたは db_owner 固定データベース ロールのメンバーシップが必要です。Requires membership in the sysadmin fixed server role or the db_owner fixed database role.

使用例Examples

A.A. データベース内の PRIMARY ファイル グループをチェックするChecking the PRIMARY filegroup in the a database

次の例では、現在のデータベースのプライマリ ファイル グループをチェックします。The following example checks the primary filegroup of the current database.

  
DBCC CHECKFILEGROUP;  
GO  

B.B. 非クラスター化インデックスを除く AdventureWorks データベースの PRIMARY ファイル グループをチェックするChecking the AdventureWorks PRIMARY filegroup without nonclustered indexes

次の例では、プライマリ ファイル グループの ID 番号を指定し、NOINDEX オプションを指定することによって、非クラスター化インデックスを除く AdventureWorks2012 データベースのプライマリ ファイル グループをチェックします。The following example checks the AdventureWorks2012 database primary filegroup (excluding nonclustered indexes) by specifying the identification number of the primary filegroup, and by specifying NOINDEX.

USE AdventureWorks2012;  
GO  
DBCC CHECKFILEGROUP (1, NOINDEX);  
GO  

C.C. オプションを指定してプライマリ ファイル グループをチェックするChecking the PRIMARY filegroup with options

次の例では、master データベースのプライマリ ファイル グループをチェックします。このとき、オプション ESTIMATEONLY を指定します。The following example checks the master database primary filegroup and specifies the option ESTIMATEONLY.

USE master;  
GO  
DBCC CHECKFILEGROUP (1)  
WITH ESTIMATEONLY;  

参照See Also

DBCC (Transact-SQL)DBCC (Transact-SQL)
FILEGROUP_ID (Transact-SQL)FILEGROUP_ID (Transact-SQL)
sp_helpfile (Transact-SQL)sp_helpfile (Transact-SQL)
sp_helpfilegroup (Transact-SQL)sp_helpfilegroup (Transact-SQL)
sys.sysfilegroups (Transact-SQL)sys.sysfilegroups (Transact-SQL)
DBCC CHECKDB (Transact-SQL)DBCC CHECKDB (Transact-SQL)
DBCC CHECKALLOC (Transact-SQL)DBCC CHECKALLOC (Transact-SQL)
DBCC CHECKTABLE (Transact-SQL)DBCC CHECKTABLE (Transact-SQL)