0

차등 백업에서 데이터베이스를 복원하는 동안 문제가 발생합니다. 다음은 데이터베이스에 적용 할 내가 너무 최근의 LSN 81,125,000000059600,297에서 SQL Server 2008의 차등 백업. SSMS를 통해 복원 할 수 있지만 Transact SQL을 통해 복원 할 수 없음

DROP DATABASE DBName_delta 
GO 
BACKUP DATABASE DBName TO DISK = 'E:\Fullbak1.bak' 
GO 
RESTORE FILELISTONLY FROM DISK = 'E:\Fullbak.bak' 
GO 
RESTORE DATABASE DBName_delta 
    FROM DISK='E:\Fullbak.bak' 
    WITH MOVE 'DBName_Data' TO 'E:\DBData\DBName_delta.mdf', 
    MOVE 'DBName_Image_Data' TO 'E:\DBData\DBName_delta_Image_Data.mdf', 
    MOVE 'DBName_Log' TO 'D:\DBLog\DBName_delta.ldf', 
    NORECOVERY 

--Made Some changes in the database 
BACKUP DATABASE DBName 
    TO DISK = 'E:\DiffBak1.TRN' 
    WITH DIFFERENTIAL 
GO 

--Made Some more changes in the database  
BACKUP DATABASE DBName 
    TO DISK = 'E:\DiffBak2.TRN' 
    WITH DIFFERENTIAL 
GO 

RESTORE FILELISTONLY FROM DISK = 'E:\DiffBak1.TRN' 
GO 

RESTORE LOG DBName_delta FROM DISK='E:\DiffBak1.TRN' WITH NORECOVERY 
GO 

메시지 4305, 수준 16, 상태 1, 줄 2
이 백업 세트의 로그가 시작

을 수행하는 단계입니다. LSN 81121000000116200001을 포함하는 이전 로그 백업을 복원 할 수 있습니다.

메시지 1613, 수준 16, 상태 1, 줄 2
RESTORE LOG가 비정상적으로 종료됩니다. 나도 같은 E 복원하려고 할 때

RESTORE FILELISTONLY FROM DISK = 'E:\DiffBak2.TRN' 
GO 
RESTORE LOG DBName_delta FROM DISK='E:\DiffBak2.TRN' WITH STANDBY = 'c:\undo.ldf' 
GO 

는 그러나 다음 WITH NORECOVERY 옵션을 사용하여 \ DiffBak1.TRN SSMS를 통해를, 데이터베이스를 복원하고 다시 내가 사용하여 동일한 파일의 복원을 수행 할 수 있었다 Transact SQL. 내가 여기서 뭔가를 놓치고 있니? 이것은 RESTORE DATABASE와 관련이 있습니까? 그 사이에 어떤 로그도 놓치지 않았 음을 확신합니다. 어떤 도움을 많이 주시면 감사하겠습니다.

답변

0

나는 이것을 알아낼 수있다. 앞서 언급했듯이 SSMS 마법사를 통해 차등 데이터베이스를 복원 할 수 있었고 마법사에서 스크립트를 가져와 쿼리의 차이점을 발견했습니다.

내가

RESTORE DATABASE [DBrel02t_delta] FROM DISK = N'E:\DiffBak1.TRN' WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 10 
GO 

RESTORE LOG DBName_delta FROM DISK='E:\DiffBak1.TRN' WITH NORECOVERY 
GO 

내가 코드를 변경 한 아래의 코드를 사용하고이 문제를 해결. 아래 쿼리를 사용하여 백업의 lsn 세부 정보를 찾으십시오.

RESTORE HEADERONLY FROM DISK = N’<backup file>’; 
+0

즉, 파일 경로에 영어 이외의 문자가 있음을 의미합니다. 'N '접두사는 문자열이 유니 코드임을 의미합니다. 모든 문자가 영어 인 경우 필요하지 않습니다. –

+0

정확하지 않습니다. 로그를 복원하는 대신 두 번째 코드가 데이터베이스를 복원하는 중이었습니다. 그것은 차이를 만들었습니다. 나는 그 단계를 스크립트로 작성하여 그 차이점을 발견했다. –