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 값이 다시 사용됩니다.
같은 데이터 형식의 새 논리적 파일을 다른 이름으로 만들려면 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)
참고 항목
모든 파일 이름이나 파일 경로를 사용할 수 있습니다.
다음 예제와 같이 ALTER DATABASE 문을 사용하여 1단계에서 만든 논리 파일을 제거합니다.
ALTER DATABASE [DBNAME] REMOVE FILE [different_remove_file_name]
데이터베이스의 트랜잭션 로그 백업을 만듭니다.
db_file1 이름이 지정된 논리 파일을 다시 제거합니다.