2007~2011/SQL Server2009. 8. 13. 00:01
흔히(?) 발생하는 백업 후 복원 실패 이슈와 관련하여 아래와 같이 정리하였습니다. 복원 대상 폴더에 파일을 Write 할 수 있는 권한이 없거나 복원 대상 폴더가 없을 경우 이와 같은 문제가 발생할 수 있습니다. 


[환경]
SQL Server 2008 


[현상]
SQL Server 2005 AdventureWorks 데이터베이스를 백업한 후 아래 쿼리를 사용하여 SQL Server 2008 에 복원을 시도하였으나 실패 오류가 발생합니다.

RESTORE DATABASE adventureworks from disk = 'D:\Adventureworks.bak'

메시지 5133, 수준 16, 상태 1, 줄 1
운영 체제 오류 5(액세스가 거부되었습니다.)(으)로 인해 파일 "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf"에 대한 디렉터리를 조회하지 못했습니다.
메시지 3156, 수준 16, 상태 3, 줄 1
파일 'AdventureWorks_Data'을(를) 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf'(으)로 복원할 수 없습니다. WITH MOVE를 사용하여 올바른 파일 위치를 확인하십시오.
메시지 5133, 수준 16, 상태 1, 줄 1
운영 체제 오류 5(액세스가 거부되었습니다.)(으)로 인해 파일 "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_log.ldf"에 대한 디렉터리를 조회하지 못했습니다.
메시지 3156, 수준 16, 상태 3, 줄 1
파일 'AdventureWorks_Log'을(를) 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_log.ldf'(으)로 복원할 수 없습니다. WITH MOVE를 사용하여 올바른 파일 위치를 확인하십시오.
메시지 3119, 수준 16, 상태 1, 줄 1
RESTORE 문을 계획하는 동안 문제가 발견되었습니다. 자세한 내용은 이전 메시지를 참조하십시오.
메시지 3013, 수준 16, 상태 1, 줄 1
RESTORE DATABASE이(가) 비정상적으로 종료됩니다.


[원인]
데이터베이스 파일을 복원하기 위한 경로에 파일을 write 할 수 있는 권한이 없습니다.
(C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data)


[해결방법]
파일이 복원되는 경로를 확인한 후 필요한 권한을 부여하거나 또는 아래와 같이 WITH MOVE 옵션을 사용하여 복원된 데이터베이스 파일이 위치할 경로를 지정합니다. 

RESTORE FILELISTONLY FROM DISK = 'D:\AdventureWorks.bak'

위의 쿼리를 통해 복원 시 대상 폴더와 파일명을 확인할 수 있습니다. 


아래와 같이 WITH MOVE 옵션을 사용하여 복원 대상 폴더를 변경하여 문제를 해결할 수 있습니다. 
RESTORE DATABASE AdventureWorks FROM DISK = 'D:\Adventureworks.bak'
WITH MOVE 'AdventureWorks_Data' TO 'D:\DATA\AdventureWorks_Data.mdf',
MOVE 'AdventureWorks_Log' TO 'D:\DATA\AdventureWorks_log.ldf'


[분석결과]
복원 대상 C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data 폴더의 NTFS 권한 확인
 - SQL Server 2008 서비스 계정이 해당 폴더를 Write 할 수 있는 권한이 부여되어 있지 않습니다. 


[참고자료]

BACKUP 및 RESTORE를 사용하여 데이터베이스 복사


작성자 : Lai Go / 작성일자 : 2009.08.11
Posted by Lai Go