OS エラー 1450 665 はデータベースのデータ ファイルの報告

適用対象: SQL Server 2008 R2 StandardSQL Server 2008 R2 DatacenterSQL Server 2008 R2 Enterprise

現象


SQL Server コンピューターで、次の操作のいずれかを実行することを想定します。

  • 大規模なデータベースのデータベース スナップショットを作成するとします。 この後は、ソース データベースに多数のデータ変更操作や保守操作を実行します。
  • ミラー データベースのデータベース スナップショットを作成します。
  • 大規模なデータベースの整合性をチェックするためのコマンド群は、DBCC CHECKDB を実行して、そのデータベース内のデータ変更の数が多いもを実行します。

によって SQL Server エラー ログに報告された次のエラーが発生するこのシナリオでは、 で SQL Server が実行されている環境です。

Windows Server 2003

オペレーティング システムに返されるエラー 1450 (システム リソースの不足は、要求されたサービスを完了できません存在) ハンドル 0x0000000000000D5C を使用してオフセット 0x00002a3ef96000 ファイルに書き込み中に SQL Server にします。これは、一時的な状態は、通常、SQL Server は操作を再試行してください。問題が解決しないし、イミディ エイト場合修正アクションを実行する必要があります。

Windows Server 2008、Windows Vista では、サーバーおよびクライアントのオペレーティング システムのそれ以降のバージョン

オペレーティング システム エラーが返されました (要求された操作を完了できませんでした、ファイル システムの制限のため) 665 に SQL Server のオフセット 0x00002a3ef96000 に書き込み中にファイルに 'Sam.mdf:MSSQL_DBCC18'

これらのエラーだけでなく場合もありますラッチ タイムアウトのエラー次のようにします。

  • ラッチの待機中にタイムアウトが発生しました: クラスの'DBCC_MULTIOBJECT_SCANNER'、id 000000002C61DF40、4、0x00000000038089B8 のタスクを入力: 16、待機時間 600、0x1a、0x0000000006A09828 のタスクを所有しているフラグが設定します。 待機を続行します。
  • ラッチの待機中にタイムアウトが発生しました: クラスの'ACCESS_METHODS_HOBT_COUNT'、id 000000002C61DF40、4、0x00000000038089B8 のタスクを入力: 16、待機時間 600、0x1a、0x0000000006A09828 のタスクを所有しているフラグが設定します。 待機を続行します。

また、場合もありますさまざまな動的管理ビュー (DMV) を表示するときにブロックsys.dm_exec_requestssys.dm_os_waiting_tasksなどのようにします。

原因


NFTS で極端に断片化されたファイルを維持するために多数の ATTRIBUTE_LIST_ENTRY のインスタンスが必要な場合、この問題が発生します。 この現象は、以下の KB 資料で説明しています。

  • 967351  NTFS ボリュームに極端に断片化されたファイルが一定のサイズまで拡張されないこと

これらのスナップショット ファイルのライフ サイクルの大量のデータの変更が発生したときこれらのレベルをデータベース スナップショットに、SQL Server によって作成された、スパース ・ ファイルが断片化していることができますを取得します。

NTFS スパース ファイルと代替データ ストリームに、SQL Server エンジンを使用する方法の完全なバック グラウンドは、次のリンクを参照してください。

解決方法


  1. 大規模なデータベース サイズの小さいファイルに分割します。 たとえば、8 TB のデータの 1 つのファイルがある場合することができますに分割して 8 つの 1 TB のデータ ファイルです。 大まかな手順はこれを実現します。
    1. 7 の新しい 1 TB のファイルを同じファイル グループに追加します。
    2. 既存のテーブルのクラスター化インデックスを再構築し、8 個のファイルの間では、各テーブルのデータを分散させるこれは自動的にします。 場合は、テーブルの 1 つを作成し、同じを実行するにドロップし、クラスター化インデックスではありません。
    3. 約 12 ~ 15% ですので、ファイルの元の 8 TB、圧縮完全です。
  2. 同じ ATTRIBUTE_LIST_ENTRY がない参照を使用して NTFS が提供することが制限を検討してください。 参照を使用してボリュームを再フォーマットする必要があります。
  3. データベース ファイルが存在するボリュームの最適化を検討します。 詳細については、もはや DBCC のだけではなくオペレーティング システム エラー (665 – ファイル システムの制限)を参照してください。 
  4. KB 資料 967351 からの Windows の修正を適用し、大規模な FRS. を取得するのには、 /Lオプションを使用してボリュームをフォーマット 
  5. 3029977 OS エラーの修正: 665 2014 年の SQL Server の columnstore インデックスを含むデータベースの DBCC CHECKDB コマンドを実行すると、
  6. 次のパフォーマンス拡張機能を使用して、DBCC チェック コマンドの有効期間を短縮し、665 エラーを回避するため。
    • 2634571DBCC CHECKDB コマンドの機能強化、可能性がありますパフォーマンスを向上させる PHYSICAL_ONLY オプションを使用すると有効にするトレース フラグ - T2562 と T2549
    • 945770修正プログラム:、DBCC CHECKDB ステートメントの実行に時間がかかるトレースを有効にするフラグを設定 - T2566
    • 3029825の修正: DBCC CHECKDB の実行、SQL CLR Udt が関係する場合に時間がかかる
  7. Windows Server 2008お客様は、以下の修正プログラムを適用してください:
    • 957065  いくつかのアプリケーションが Windows Server 2008 または Windows Vista のシステムで、非常に大きなファイルを更新するときに、ntfs.sys ドライバーからエラー ステータス メッセージ:"0xc0000427 STATUS_FILE_SYSTEM_LIMITATION" 
  8.  SQL Server 2005 または SQL Server 2008のお客様は、実行されているバージョンに該当する以下の修正プログラムを適用することを強く推奨します。
    • 961123  修正: SQL Server 2005 データベースに対して DBCC チェック コマンドのいずれかを実行するとき、または SQL Server 2005 データベースのデータベース スナップショットを作成するとき、SQL Server サービスを停止します。
    • 967164  を修正する: [SQL Server サービスが応答を停止し、1450 データベース スナップショットを作成または SQL Server 2005 および SQL Server 2008 データベースに対して DBCC チェック ステートメントを実行するときにエラーが発生します。
    • 967470  修正: 更新プログラムまたは SQL Server 2005 および SQL Server 2008 で作成されたクラスター化インデックスを持たないテーブルに対する削除操作を実行するときにエラー メッセージ:「オペレーティング システムは、エラー 1450 を返す」

特定の状況では、まだこれらの修正プログラムを適用した後でも上記のエラーが発生する可能性があります。 シナリオでは、次のブログ記事で説明した回避策のいくつかを評価できます。

詳細については、次のマイクロソフトのリソースを参照してください。

DBCC はもはや単にオペレーティング システム エラー (665 ファイル システムの制限)

 

スパース ファイルが NTFS と参照の両方でサポートされています。

参照ボリューム上の SQL Server データベースが配置されている場合、DBCC CHECKDB の動作