다음을 통해 공유


MSSQLSERVER_5009

적용 대상:SQL Server

세부 사항

attribute
제품 이름 SQL Server
이벤트 ID 5009
이벤트 원본 MSSQLSERVER
구성 요소 SQLEngine
심볼 이름 ALT_BADDISKS
메시지 텍스트 문에 나열된 파일을 하나 이상 찾을 수 없거나 초기화할 수 없습니다.

설명

이 오류는 확인할 수 없는 파일 이름 또는 fileID를 ALTER DATABASE 또는 DBCC SHRINK* 명령에 지정했음을 나타냅니다.

다음과 같은 시나리오를 생각해보세요.

  • 전체 또는 대량 로그 복구 모델을 사용하는 Microsoft SQL Server 데이터베이스가 있습니다.
  • 데이터베이스에 db_file1 이름이 지정된 새 데이터 파일을 추가합니다.
  • 파일의 파일 형식을 db_file1 데이터로 설정합니다.
  • 파일 형식을 잘못 지정했음을 알게 됩니다.
  • 파일을 제거한 db_file1 다음 이 데이터베이스에 대한 트랜잭션 로그를 백업합니다.
  • 동일한 데이터베이스에 db_file1이라는 새 로그 파일을 추가합니다.
  • ALTER DATABASE 문을 사용하거나 SQL Server Management Studio를 사용하여 db_file1 이름이 지정된 로그 파일을 제거하려고 합니다.

이 시나리오에서는 다음과 같은 오류 메시지가 표시됩니다.

문에 나열된 Msg 5009, 수준 16, 상태 9, 줄 1 하나 이상의 파일을 찾을 수 없거나 초기화할 수 없습니다.

가능한 원인

이 문제는 제거하려는 파일의 논리적 이름이 시스템 카탈로그 테이블에서 고유하지 않은 경우에 발생합니다. 예를 들어 이 문제는 파일이 이전에 데이터베이스에 존재하고 파일이 제거된 경우에 발생합니다.

동일한 논리 이름을 가진 파일을 제거하려고 하면 SQL Server에서 삭제된 논리 파일을 제거하려고 합니다. 이로 인해 오류 메시지가 표시됩니다.

사용자 작업

이 문제를 해결하려면 아래 단계를 수행합니다.

참고 항목

이러한 단계를 수행하면 파일 ID 값이 다시 사용됩니다.

  1. 같은 데이터 형식의 새 논리적 파일을 다른 이름으로 만들려면 ALTER DATABASE 문을 사용합니다. 예를 들어 다음 예제와 같이 different_remove_file_name 논리 파일의 db_file1이름을 대신 지정합니다.

    ALTER DATABASE [DBNAME] ADD FILE ( NAME = N'different_remove_file_name',
    FILENAME = N'D:\MSSQL.1\MSSQL\DATA\db_file1.ndf', SIZE = 1MB, MAXSIZE = 1MB)
    

    참고 항목

    모든 파일 이름이나 파일 경로를 사용할 수 있습니다.

  2. 다음 예제와 같이 ALTER DATABASE 문을 사용하여 1단계에서 만든 논리 파일을 제거합니다.

    ALTER DATABASE [DBNAME] REMOVE FILE [different_remove_file_name]
    
  3. 데이터베이스의 트랜잭션 로그 백업을 만듭니다.

  4. db_file1 이름이 지정된 논리 파일을 다시 제거합니다.