【发布时间】:2010-06-22 15:27:47
【问题描述】:
我的问题很简单。 我有一个包含一个或多个备份集的 .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 可以给我一个关于里面有多少备份集的反馈,这样我可以警告用户,但事实并非如此。
有人知道这件事吗?
感谢您的宝贵时间。
【问题讨论】:
标签: c# sql-server database restore smo