Моя проблема действительно проста.У меня есть файл .bak, который содержит один или несколько наборов резервных копий.
Когда я использую 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 может дать мне отзыв о том, сколько наборов резервных копийвнутри, таким образом, я мог бы предупредить пользователя, но это не так.
Кто-нибудь знает это?
Спасибо за ваше время.