SQL Server で DBCC コマンドを実行した後に、SQL Server エラーログにエラーメッセージが記録される場合がある


現象


Microsoft SQL Server で次のいずれかの DBCC コマンドを実行します。
  • DBCC CHECKDB
  • DBCC CHECKALLOC
  • DBCC CHECKTABLE
  • DBCC CHECKCATALOG
  • DBCC CHECKFILEGROUP
この操作を行うと、次のようなエラーメッセージが SQL Server のエラーログに記録される場合があります。
2006-09-01 17:33:24.48 spid54      35 transactions rolled forward in database 'ProductionData' (11). This is an informational message only. No user action is required.2006-09-01 17:35:39.16 spid54      4 transactions rolled back in database 'ProductionData' (11). This is an informational message only. No user action is required.2006-09-01 17:36:31.76 spid53      Error: 17053, Severity: 16, State: 1.2006-09-01 17:36:31.76 spid53      E:\SQLData\ProductionData.mdf:MSSQL_DBCC11: Operating system error 112(There is not enough space on the disk.) encountered.2006-09-01 17:36:31.76 spid53      Error: 17053, Severity: 16, State: 1.2006-09-01 17:36:31.76 spid53      E:\ SQLData \ProductionData.mdf:MSSQL_DBCC11: Operating system error 112(There is not enough space on the disk.) encountered.2006-09-01 17:36:31.77 spid53      Error: 17053, Severity: 16, State: 1.2006-09-01 17:36:31.77 spid53      E:\ SQLData \ProductionData.mdf:MSSQL_DBCC11: Operating system error 112(There is not enough space on the disk.) encountered.2006-09-01 17:36:31.80 spid54      DBCC CHECKDB (ProductionData) executed by  DomainName \ UserName  found 0 errors and repaired 0 errors. Elapsed time: 0 hours 3 minutes 19 seconds.2006-09-01 17:36:31.90 spid53      Error: 17053, Severity: 16, State: 1.2006-09-01 17:36:31.90 spid53      E:\ SQLData \ProductionData.mdf:MSSQL_DBCC11: Operating system error 112(There is not enough space on the disk.) encountered.2006-09-01 17:36:31.90 spid53      Error: 17053, Severity: 16, State: 1.2006-09-01 17:36:31.90 spid53      E:\ SQLData \ProductionData.mdf:MSSQL_DBCC11: Operating system error 112(There is not enough space on the disk.) encountered.2006-09-01 17:36:32.30 spid54      Error: 926, Severity: 21, State: 6.2006-09-01 17:36:32.30 spid54      Database 'ProductionData' cannot be opened. It has been marked SUSPECT by recovery. See the SQL Server errorlog for more information. 

原因


SQL Server では、DBCC コマンドは内部の読み取り専用データベーススナップショットを使用します。 これらのデータベーススナップショットは、対応するデータベースデータファイルが置かれているドライブと同じドライブに作成されます。 データベーススナップショットは、DBCC コマンドの実行対象となる、データベース内の変更されたデータの量に比例して増加します。 トランザクションアクティビティがこのデータベースで継続している場合、DBCC コマンドで作成されたデータベーススナップショットにディスク領域の問題が発生する可能性があります。 データベーススナップショットファイルと実際のデータファイルは同じディスクドライブ上に存在するため、両方のファイルのセットがディスク領域と競合します。 この場合、アプリケーショントランザクションまたはユーザートランザクションが優先されます。 DBCC で使用されている内部データベーススナップショットが問題ありとしてマークされています。 そのため、DBCC コマンドではエラーが発生し、終了することはできません。"ディスク領域" は、内部データベーススナップショットへの書き込みが失敗する理由の1つです。 また、OS エラーコード1450や665などのその他の理由でも、同様の問題が発生し、内部データベーススナップショットが問題ありの状態に表示されることがあります。

状態


この動作は仕様です。

詳細情報


以下の重要な情報は、「現象」セクションで説明されているエラーメッセージに適用されます。
  • これらのエラーメッセージは、異なる active server プロセス識別子 (Spid) からのものです。 SPID 54 は、DBCC コマンドを実行するセッション ID です。 SPID 53 は、ユーザートランザクションを実行するセッション ID です。
  • これらのエラーメッセージは、トランザクションをロールフォワードし、トランザクションをロールバックすることを示します。 これらのメッセージは、DBCC コマンド実行の最初のフェーズで生成されます。 DBCC コマンドを実行すると、DBCC コマンドは最初に内部スナップショットを作成しようとします。 スナップショットを作成すると、このスナップショットに対してデータベースの回復が実行され、スナップショットが一貫性のある状態になります。 エラーメッセージには、このアクティビティが反映されます。
  • エラーメッセージ926は、データベースが問題ありとしてマークされていることを示します。 このエラーメッセージは、実際のデータベースではなく、内部スナップショットを指します。 データベースの状態は "オンライン" で、データベースは機能しています。
  • エラーメッセージ17053には、内部スナップショットに使用される NTFS ファイルシステムの代替ストリームの名前が含まれています。 このエラーメッセージは、この問題の実際の理由を示します。
  • 内部データベーススナップショットでは、実際のデータベースと同じ名前が使用されます。 そのため、これらのエラーメッセージにはデータベースの名前が含まれています。
  • エラーログメッセージに、DBCC CHECKDB が完了したことが示されているにもかかわらず、異常終了と見なされる必要があります。 DBCC CHECKDB コマンドを実行して、データベースの一貫性にアクセスするまで実行されるようにする必要があります。 このような場合は、DBCC CHECKDB コマンドからの出力をクライアントに返送して、どのオブジェクトがチェックされ、どのオブジェクトがクリーンであるかを理解できるようにします。
この問題の詳細については、SQL Server Books Online の次のトピックを参照してください。
  • DBCC Internal Database Snapshot の使用状況
  • データベーススナップショットのスパースファイルサイズについて
以下のトピックに記載されている手順に従って、スペース使用の問題を回避します。 問題が修正されたら、DBCC コマンドを再実行します。 「Symptoms」セクションで説明されているエラーメッセージに加えて、次のエラーメッセージが表示されることがあります。
メッセージ5128、レベル17、状態2、行 6 [スパースファイル ' E:\CreateFile\ProductionData.mdf: MSSQL_DBCC11 ' は、ディスクの空き領域が不足しているため、失敗しました。
この場合、DBCC コマンドを実行するクライアントアプリケーションは、次のエントリをアプリケーションの結果セットに表示します。
' ProductionData ' の DBCC の結果。CHECKDB で、データベース ' ProductionData ' に0個の割り当てエラーと一貫性エラー0が見つかりました。Msg 926、レベル21、状態6、行1データベース ' ProductionData ' を開けません。 「回復によって疑わしい」とマークされています。 詳細については、SQL Server エラーログを参照してください。Msg 0、Level 20、State 0、Line 0A 重大なエラーが現在のコマンドで発生しました。 結果は破棄する必要があります。
スナップショットをまったく作成できなかった場合は、DBCC コマンドを発行するクライアントアプリケーションで、次のようなエラーメッセージが表示されます。
メッセージ1823、レベル16、状態1、行1A データベーススナップショットは、起動に失敗したため作成できません。メッセージ7928、レベル16、状態1、オンラインチェック用の行1Outlook データベーススナップショットを作成できませんでした。 以前のエラーが発生したか、基になるボリュームのいずれかが、スパースファイルまたは代替ストリームをサポートしていないことが原因です。 オフラインでチェックを実行するための排他的なアクセス権を取得しようとしています。メッセージ5030、レベル16、状態12、行1Outlook データベースを排他的にロックして操作を実行することはできませんでした。メッセージ7926、レベル16、状態1、行1のチェックステートメントは中止されました。 データベーススナップショットを作成できなかったため、データベースまたはテーブルをロックできなかったため、データベースを確認できませんでした。 この動作が予期されるタイミングと回避策の詳細については、Books Online を参照してください。 詳細については、以前のエラーも参照してください。メッセージ5106、レベル17、状態2、行1スパースファイル ' E:\Data\ LogFUllTest_Data MSSQL_DBCC10 ' は、ディスク領域が不足しているために失敗しました。
内部データベーススナップショットが1450または665のエラーで実行される場合は、SQL Server エラーログに次のような一般的なシーケンスが表示されます。
2008-05-21 13:03:45.67 spid500     272 transactions rolled forward in database 'MYDATABASE' (12). This is an informational message only. No user action is required.2008-05-21 13:03:45.84 spid500     2 transactions rolled back in database 'MYDATABASE' (12). This is an informational message only. No user action is required.2008-05-21 13:03:46.97 spid500     Recovery completed for database MYDATABASE (database ID 12) in 5 second(s) (analysis 602 ms, redo 3954 ms, undo 105 ms.) This is an informational message only. No user action is required.2008-05-21 13:36:48.25 spid480     The operating system returned error 665(The requested operation could not be completed due to a file system limitation) to SQL Server during a write at offset 0x00001b35138000 in file 'I:\MSSQL\DATA\mscrm_data1.ndf:MSSQL_DBCC12'.2008-05-21 13:36:48.26 spid480     Error: 17053, Severity: 16, State: 1.2008-05-21 13:36:48.26 spid480     C:\MSSQL\DATA\MyDatabase.mdf:MSSQL_DBCC12: Operating system error 665(The requested operation could not be completed due to a file system limitation) encountered.2008-05-21 13:36:48.27 spid480     The operating system returned error 665(The requested operation could not be completed due to a file system limitation) to SQL Server during a write at offset 0x00001b35138000 in file 'C:\MSSQL\DATA\MyDatabase.mdf:MSSQL_DBCC12'. 2008-05-21 13:36:48.27 spid480     Error: 17053, Severity: 16, State: 1.2008-05-21 13:36:48.27 spid480     C:\MSSQL\DATA\MyDatabase.mdf:MSSQL_DBCC12: Operating system error 665(The requested operation could not be completed due to a file system limitation) encountered.2008-05-21 13:36:48.37 spid480     The operating system returned error 665(The requested operation could not be completed due to a file system limitation) to SQL Server during a write at offset 0x00001b35138000 in file 'C:\MSSQL\DATA\MyDatabase.mdf:MSSQL_DBCC12'. 2008-05-21 13:36:48.37 spid480     Error: 17053, Severity: 16, State: 1.2008-05-21 13:36:48.37 spid480     C:\MSSQL\DATA\MyDatabase.mdf:MSSQL_DBCC12: Operating system error 665(The requested operation could not be completed due to a file system limitation) encountered.2008-05-21 13:36:48.37 spid500     DBCC CHECKDB (MYDATABASE) executed by  DomainName \ UserName  found 0 errors and repaired 0 errors. Elapsed time: 0 hours 33 minutes 16 seconds.  Internal database snapshot has split point LSN = 0000759c:002547bc:0040 and first LSN = 0000759c:0023696d:0049.  This is an informational message only. No user action is required.