次の方法で共有


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 エラーが他に存在する場合は、外部ファイルの単なる無効な追加以外に SQL Server FILESTREAM フォルダーが破損または改ざんされています。 この状況は手動で修復できません

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

DBCC CHECKDB の実行

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

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

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