다음을 통해 공유


MSSQLSERVER_3056

적용 대상: SQL Server

세부 정보

attribute
제품 이름 SQL Server
이벤트 ID 3056
이벤트 원본 MSSQLSERVER
구성 요소 SQLEngine
심볼 이름 DMPDB_INVALID_FSDATA
메시지 텍스트 백업 작업에서 FILESTREAM 컨테이너에서 예기치 않은 파일을 검색했습니다. 백업 작업이 계속되고 파일 '%ls'이(가) 포함됩니다.

설명

SQL Server에서 만들지 않은 FILESTREAM 컨테이너(폴더) 아래에 파일이 있는 경우 오류 3056이 발생합니다. 백업 작업에는 해당 파일이 포함되지만 이로 인해 데이터베이스의 파일 스트림 구성 요소 상태가 일관되지 않습니다.

Warning

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 aaaabbbb-0000-cccc-1111-dddd2222eeee is not a valid FILESTREAM file in container ID    65537.
    

    참고 항목

    프로덕션 시스템에서 시도하기 전에 데이터베이스의 백업/테스트 복사본에서 이러한 단계를 테스트하는 것이 좋습니다.

  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을 보고할 수 있지만 복구할 수는 없습니다.

백업에서 복원

문제가 하드웨어와 관련이 없고 알려진 정리 백업을 사용할 수 있는 경우 백업에서 데이터베이스를 복원합니다.