내 문제는 정말 간단합니다. 하나 이상의 백업 세트가 들어있는 .bak 파일이 있습니다.모든 백업 세트를 사용하여 SMO로 데이터베이스 복원
SMO를 사용하여이 .bak 파일로 데이터베이스를 복원 할 때 첫 번째 백업 세트 만 작업을 수행합니다. 남은 세트는 무시하는 것 같습니다.
왜 그럴까요?
내 코드를 참조하십시오
//Sets the restore configuration
Restore restore = new Restore()
{
Action = RestoreActionType.Database,
Database = _databaseToRestore.DatabaseName,
ReplaceDatabase = true
};
restore.Devices.Add(new BackupDeviceItem(_backupFilePath, DeviceType.File));
Server server = new Server(_databaseToRestore.ServerName);
DataTable fileList = restore.ReadFileList(server);
string serverDataFolder = server.Settings.DefaultFile;
if (string.IsNullOrEmpty(serverDataFolder))
serverDataFolder = server.Information.MasterDBPath;
foreach (DataRow file in fileList.Rows)
{
restore.RelocateFiles.Add(
new RelocateFile((string)file["LogicalName"],
Path.Combine(serverDataFolder, _databaseToRestore.DatabaseName + Path.GetExtension((string)file["PhysicalName"]))));
}
//Gets the exclusive access to database
server.KillAllProcesses(_databaseToRestore.DatabaseName);
restore.Wait();
restore.SqlRestore(server);
은 내가 BackupDeviceItem가 수 내게 사용자에게 경고 할 수 이러한 방법으로, 내부 거기에 설정 얼마나 많은 백업에 대한 피드백을 제공합니다 생각하지만 그렇지 않다.
누구나 단서가 있습니까?
감사합니다.
매우 유용한 결과물입니다. 감사합니다. 그 헤더를 추가하여 그 헤더를 읽고 싶은 파일을 Restore.Devices.Add()를 통해 복원 오브젝트에 추가하십시오. MSDN의 전체 예제, http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.restore.readbackupheader.aspx – Despertar