MSSQLSERVER_3056
適用対象:SQL Server
詳細
属性 | 値 |
---|---|
製品名 | SQL Server |
イベント ID | 3056 |
イベント ソース | MSSQLSERVER |
コンポーネント | SQLEngine |
シンボル名 | DMPDB_INVALID_FSDATA |
メッセージ テキスト | FILESTREAM コンテナーで予期しないファイルが検出されました。 バックアップ操作は続行され、ファイル '%ls' が含められます。 |
説明
エラー 3056 は、SQL Serverによって作成されていない FILESTREAM コンテナー (フォルダー) の下にファイルが存在する場合に発生します。 バックアップ操作にはそのファイルが含まれますが、これによりデータベース内のファイルストリーム コンポーネントの一貫性のない状態が発生します。
警告
FILESTREAM コンテナーは、SQL Serverによって管理されるフォルダーです。 FILESTREAM フォルダー内のファイルを追加または削除しない
ユーザーの操作
エラー メッセージには、予期しないファイルの名前が含まれています。 このファイルがこのフォルダーに入った方法を調査します。
バックアップを終了し、このデータベースの以前のバックアップが上書きまたは失われないようにする
エラー 3056 でバックアップが失敗したデータベースに対して完全な DBCC CHECKB を実行します。 physical_onlyで使用しない
DBCC CHECKB 出力を十分に確認します。エラーは、異なるフェーズ中に検出され、同じオブジェクトに対して数百行離れている可能性があります
- CHECKDB 出力の最後の行には、エラーの要約カウントが表示されます。 カウントされた各エラーの個々のメッセージが見ついていることを確認します
- 下部に次のようなエラーが表示されます。
CHECKDB found 1 allocation errors and 1 consistency errors in database 'AG_Filestream'.
報告されるエラーが 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
運用システムでデータベースを試す前に、データベースのバックアップ/テスト コピーでこれらの手順をテストすることをお勧めします。
ファイルを見つけるには、このコマンドを実行して FILESTREAM グループの物理フォルダーを見つけます
SELECT name, physical_name, state_desc, type_desc FROM sys.database_files WHERE type_desc = 'FILESTREAM'
Windows エクスプローラーで、7906 または 7908 エラーで識別されたサブフォルダーを開きます (たとえば、\782fc3bb-dc63-4ab8-9de6-e9dfa36454d2)
次に、エラー メッセージで識別されたファイル (NO_USER_FILE_SHOULD_BE_HERE.txtなど) を見つけて、このファイルのコピーをバックアップとして一時ディレクトリに作成します。
コピーがあることを確認したら、フォルダーからファイルを削除できます
このファイルがこのシステム フォルダーに追加された理由と方法を理解し、それ以上発生しないようにする手順を実行します
- この FILESTREAM フォルダーへのユーザー アクセスに対して適切なアクセス許可が付与されていることを確認する
- FILESTREAM フォルダーにファイルを作成するアプリケーションがないことを理解し、確認する
新しい DBCC CHECKDB を実行し、エラーが発生しないことを確認します
7903,7904,7905,7907 を含む他の CHECKDB エラーがある場合は、外部ファイルの単なる無効な追加以外に FILESTREAM フォルダー SQL Server破損または改ざんされています。 この状況は手動で修復できません
- ハードウェアで問題がないか確認して解決する
- システムがマルウェアから保護されていることを確認します。 FILESTREAM データ ファイルは、ウイルス対策ソフトウェアのスキャンから除外する必要があることに注意してください。 FILESTREAM のパフォーマンスを向上させるための推奨事項とガイドラインを参照してください
- その後、正常なデータベース バックアップから復元する
DBCC CHECKDB の実行
DBCC CHECKDB を実行すると、エラー 7908 または 7906 が報告される可能性がありますが、修復できません。
バックアップから復元する
問題がハードウェア関連ではなく、既知のクリーン バックアップが使用可能な場合は、バックアップからデータベースを復元します
フィードバック
https://aka.ms/ContentUserFeedback。
近日公開予定: 2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub イシューを段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、以下を参照してください:フィードバックの送信と表示