백업 복원 실패-파일 'Db'를 '{…} .mdf'로 복원 할 수 없습니다. WITH MOVE를 사용하여 파일의 유효한 위치를 식별하십시오.


9

고객으로부터받은 백업 파일에서 restore 명령을 사용하여 복원을 시도하는 중에 다음 오류가 발생합니다.

디스크에서 데이터베이스 SFDB 복원 = N'C : \ Backup \ Backup.bak '

이 문제를 해결하기 위해 내가 할 수있는 일에 대한 생각이 있습니까? mdf를 찾고 있으므로 내가 가진 백업 파일이 전체 백업이 아닌 증분 백업이라고 가정하여 mdf를 찾고있는 이유는 무엇입니까?

1) 그들이 모든 데이터 (전체 db)를 주 었는지 또는 2) 올바른 데이터를 가지고 있는지, 그리고 올바른 T-SQL 명령으로 복원을 수행 할 수 있는지 확실하지 않습니다. 어떻게하는지 모르겠습니다.

도움을 부탁드립니다.

Msg 5133, Level 16, State 1, Line 2
Directory lookup for the file "D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Db.mdf" failed with the operating system error 21(failed to retrieve text for this error. Reason: 15105).
Msg 3156, Level 16, State 3, Line 2
File 'Db' cannot be restored to 'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Db.mdf'. Use WITH MOVE to identify a valid location for the file.
Msg 5133, Level 16, State 1, Line 2
Directory lookup for the file "D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Db_log.LDF" failed with the operating system error 21(failed to retrieve text for this error. Reason: 15105).
Msg 3156, Level 16, State 3, Line 2
File 'DbDev_log' cannot be restored to 'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Db_log.LDF'. Use WITH MOVE to identify a valid location for the file.
Msg 3634, Level 16, State 1, Line 2
The operating system returned the error '21(failed to retrieve text for this error. Reason: 15105)' while attempting 'GetVolumeInformation' on 'D:\'.
Msg 3013, Level 16, State 1, Line 2
RESTORE DATABASE is terminating abnormally.

DISK = N'C : \ Backup \ Backup.bak '에서 FileListOnly를 복원하면 다음과 같이 표시됩니다.

LogicalName PhysicalName    Type    FileGroupName   Size    MaxSize FileId  CreateLSN   DropLSN UniqueId    ReadOnlyLSN ReadWriteLSN    BackupSizeInBytes   SourceBlockSize FileGroupId LogGroupGUID    DifferentialBaseLSN DifferentialBaseGUID    IsReadOnly  IsPresent   TDEThumbprint
Db  D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Db.mdf  D   PRIMARY 29622272    35184372080640  1   0   0   02925462-83CC-4222-8966-53229FA25B1C    0   0   29032448    512 1   NULL    269000000146900238  735C7F0E-F63D-4AA1-AC48-505A084AC00B    0   1   NULL
Db_log  D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Db_log.LDF  L   NULL    40239104    2199023255552   2   0   0   71038B04-CBC9-4E4A-93AD-4E1268859CB2    0   0   0   512 0   NULL    0   00000000-0000-0000-0000-000000000000    0   1   NULL
DbDev_filestream    D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Db  S   PRIMARY_FILESTREAM  4691012 0   65537   18000000011800001   0   627C9AAA-97BD-4991-9C8C-90C400226A9F    0   0   4784128 512 2   NULL    269000000146900238  735C7F0E-F63D-4AA1-AC48-505A084AC00B    0   1   NULL

답변:


19

첫 번째 명령의 출력을 다시 살펴보십시오. 수정 사항을 알려주는 오류 메시지가 있습니다.

이 섹션을 찾으십시오.

Use WITH MOVE to identify a valid location for the file.

기본적으로 컴퓨터의 파일 경로가 원래 컴퓨터와 일치하지 않습니다. 이동 옵션을 사용하면이 문제를 해결하게됩니다.

다음은 MOVE 옵션을 사용하는 RESTORE 명령 의 예입니다 .

USE [master]
RESTORE DATABASE [AdventureWorks2008R2] 
FROM  DISK = N'C:\SQL Backups\AdventureWorks2008R2.bak' 
WITH  FILE = 1,  
MOVE N'AdventureWorks2008R2_Data' TO N'C:\MyNewDataLocation\AdventureWorks2008R2_Data.mdf',  
MOVE N'AdventureWorks2008R2_Log' TO N'C:\MyNewLogLocation\AdventureWorks2008R2_Log.ldf',  
MOVE N'FileStreamDocuments2008R2' TO N'C:\MyNewFileStreamLocation\Documents2008R2',  
NOUNLOAD,  REPLACE,  STATS = 1
GO

도움이 되었기를 바랍니다!


2

Steven의 대답은 RESTORE 전에이 명령을 실행할 때 나를 위해 일했습니다.

alter database [YourDBName] 
set offline with rollback immediate

그리고 이것은 RESTORE 이후입니다 :

 alter database [YourDBName] 
 set online

-1

액세스 권한에 문제가있을 수도 있습니다. 사용자가 sysadmin역할 에 있는지 확인하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.