MSSQLSERVER_3056

適用対象:SQL Server

詳細

属性
製品名 SQL Server
イベント ID 3056
イベント ソース MSSQLSERVER
コンポーネント SQLEngine
シンボル名 DMPDB_INVALID_FSDATA
メッセージ テキスト FILESTREAM コンテナーで予期しないファイルが検出されました。 バックアップ操作は続行され、ファイル '%ls' が含められます。

説明

エラー 3056 は、SQL Serverによって作成されていない FILESTREAM コンテナー (フォルダー) の下にファイルが存在する場合に発生します。 バックアップ操作にはそのファイルが含まれますが、これによりデータベース内のファイルストリーム コンポーネントの一貫性のない状態が発生します。

警告

FILESTREAM コンテナーは、SQL Serverによって管理されるフォルダーです。 FILESTREAM フォルダー内のファイルを追加または削除しない

ユーザーの操作

エラー メッセージには、予期しないファイルの名前が含まれています。 このファイルがこのフォルダーに入った方法を調査します。

  1. バックアップを終了し、このデータベースの以前のバックアップが上書きまたは失われないようにする

  2. エラー 3056 でバックアップが失敗したデータベースに対して完全な DBCC CHECKB を実行します。 physical_onlyで使用しない

  3. DBCC CHECKB 出力を十分に確認します。エラーは、異なるフェーズ中に検出され、同じオブジェクトに対して数百行離れている可能性があります

    • CHECKDB 出力の最後の行には、エラーの要約カウントが表示されます。 カウントされた各エラーの個々のメッセージが見ついていることを確認します
    • 下部に次のようなエラーが表示されます。 CHECKDB found 1 allocation errors and 1 consistency errors in database 'AG_Filestream'.
  4. 報告されるエラーが 7908 または 7906 のみの場合は、エラーで報告された実際のファイルを見つけることができます。 エラーは次のようになります。次に例を示します。

    Msg 7906, Level 16, State 1, Line 8
    Database error: The file "\782fc3bb-dc63-4ab8-9de6-e9dfa36454d2\NO_USER_FILE_SHOULD_BE_HERE.txt" is not a valid FILESTREAM file in container ID 65537.
    Msg 7908, Level 16, State 1, Line 8
    Table error: The file "\782fc3bb-dc63-4ab8-9de6-e9dfa36454d2\NO_USER_FILE_SHOULD_BE_HERE.txt" in the rowset directory ID 3068163f-7398-4ae7-843c-67672e29c37e is not a valid FILESTREAM file in container ID    65537.
    

    Note

    運用システムでデータベースを試す前に、データベースのバックアップ/テスト コピーでこれらの手順をテストすることをお勧めします。

  5. ファイルを見つけるには、このコマンドを実行して FILESTREAM グループの物理フォルダーを見つけます

    SELECT name, physical_name, state_desc, type_desc 
    FROM sys.database_files
    WHERE type_desc = 'FILESTREAM'
    
  6. Windows エクスプローラーで、7906 または 7908 エラーで識別されたサブフォルダーを開きます (たとえば、\782fc3bb-dc63-4ab8-9de6-e9dfa36454d2)

  7. 次に、エラー メッセージで識別されたファイル (NO_USER_FILE_SHOULD_BE_HERE.txtなど) を見つけて、このファイルのコピーをバックアップとして一時ディレクトリに作成します。

  8. コピーがあることを確認したら、フォルダーからファイルを削除できます

  9. このファイルがこのシステム フォルダーに追加された理由と方法を理解し、それ以上発生しないようにする手順を実行します

    • この FILESTREAM フォルダーへのユーザー アクセスに対して適切なアクセス許可が付与されていることを確認する
    • FILESTREAM フォルダーにファイルを作成するアプリケーションがないことを理解し、確認する
  10. 新しい DBCC CHECKDB を実行し、エラーが発生しないことを確認します

  11. 7903,7904,7905,7907 を含む他の CHECKDB エラーがある場合は、外部ファイルの単なる無効な追加以外に FILESTREAM フォルダー SQL Server破損または改ざんされています。 この状況は手動で修復できません

    • ハードウェアで問題がないか確認して解決する
    • システムがマルウェアから保護されていることを確認します。 FILESTREAM データ ファイルは、ウイルス対策ソフトウェアのスキャンから除外する必要があることに注意してください。 FILESTREAM のパフォーマンスを向上させるための推奨事項とガイドラインを参照してください
    • その後、正常なデータベース バックアップから復元する

DBCC CHECKDB の実行

DBCC CHECKDB を実行すると、エラー 7908 または 7906 が報告される可能性がありますが、修復できません。

バックアップから復元する

問題がハードウェア関連ではなく、既知のクリーン バックアップが使用可能な場合は、バックアップからデータベースを復元します