2009-06-24 5 views
4

먼저 전체 백업을 복원 한 다음 Microsoft.SqlServer.Management.Smo.Restore 클래스를 사용하여 차등 백업을 복원하여 데이터베이스를 복원하려고합니다. 그러나SMO 복원 개체를 사용하여 차등 백업 복원

Restore myDiffRestore = new Restore(); 
myDiffRestore.Database = "DatabaseName"; 
myDiffRestore.Action = RestoreActionType.Database; 
myDiffRestore.AddDevice(@"C:\BackupFile.bak", DeviceType.File); 
myDiffRestore.FileNumber = 4; // file contains multiple backup sets, this is the index of the set I want to use 
myDiffRestore.SqlRestore(myServer); 

,이 코드 : 전체 백업이 다음 코드를 사용하여 복원 다음과 같이 (완료) 전체 백업을 복원 한 후

Restore myFullRestore = new Restore(); 
myFullRestore.Database = "DatabaseName"; 
myFullRestore.Action = RestoreActionType.Database; 
myFullRestore.AddDevice(@"C:\BackupFile.bak", DeviceType.File); 
myFullRestore.FileNumber = 1; 
myFullRestore.SqlRestore(myServer); // myServer is an already-existing instance of Microsoft.SqlServer.Management.Smo.Server 

, 차등 백업을 복원 내 코드입니다 "서버 'servername'에 대한 복원이 실패했습니다."라는 메시지와 함께 Microsoft.SqlServer.Management.Smo.FailedOperationException을 발생시킵니다. 차등 백업을 복원하고 있음을 명시해야합니까? 그렇다면 어떻게해야합니까? 아니면 문제가 이것보다 덜 명백합니까? 내가 뭘 잘못하고 있는지 (또는 무시하고 있는지)에 대한 제안은 크게 감사 할 것입니다.

업데이트이 이전 버전은 API의이 양식을했지만, 이후 버전이 줄을

fullRestore.AddDevice(...); 

이 후

fullRestore.Devices.AddDevice(...) 

답변

4

을 수 있는지 여부 원래 오타 않았거나 확실하지 조금 더 파헤 치면 나는 이걸 알아 냈어. 차등 백업 위해서는 작업을 복원, 전체는 참으로 NORECOVERY 세트와 복원을 수행해야합니다 :

// before executing the SqlRestore command for myFullRestore... 
myFullRestore.NoRecovery = true; 

이 다른 트랜잭션 로그이 경우 차등 백업 인, 적용 할 필요가 있음을 지정합니다. 이 페이지에는 유용한 정보가 있습니다. http://doc.ddart.net/mssql/sql70/ra-rz_9.htm

+2

NoRecovery = true로 복원하면 데이터베이스가 "복원 중"상태로 유지됩니다. 다시 사용할 수있게하려면 다음 명령을 사용하십시오. 복구 데이터베이스 – James

+0

안녕하세요, 도넛 형은 동일한 방식으로 특정 날짜에 따라 데이터베이스 차등을 복원하는 방법을 알려주시겠습니까? –

+0

@kalyan 나는 네가 무엇을 요구하고 있는지 정확히 알지 못한다. 차등 백업 세트를 보유하고 있으며이를 ** 특정 날짜까지 ** 복원하고 싶습니까? 또는 주어진 날짜에 ** 시작 **하고 이후의 모든 차등 백업을 적용 하시겠습니까? 아니면 완전히 다른 것 - 당신이 명확히 할 수 있습니까? – Donut