用新名称从.bak文件恢复数据库

本文关键字:文件 恢复 数据库 bak 新名 | 更新日期: 2023-09-27 18:05:58

我正在使用c#, . net 3.5和SMO在SQL Server 2005中创建一个数据库(我们的生产数据库)到其他数据库(我们的开发和测试数据库)的副本。

我已经成功地从数据库创建了一个备份,并恢复了它。这当然会覆盖现有的。我使用了这个CodeProject指南

如何将数据库的备份恢复到同一服务器上具有不同名称的另一个数据库?

用新名称从.bak文件恢复数据库

using Microsoft.SqlServer.Management.Smo;
string backupFile="Backupfile";//.bak file
string dbName = "DBName";
string dbServerMachineName = "MachineName";
Microsoft.SqlServer.Management.Smo.Server server = new Microsoft.SqlServer.Management.Smo.Server(dbServerMachineName);
Database database = new Database(server, dbName);
//If Need
database.Create();
database.Refresh();
//Restoring
Restore restore = new Restore();
restore.NoRecovery = false;
restore.Action = RestoreActionType.Database;
BackupDeviceItem bdi = default(BackupDeviceItem);
bdi = new BackupDeviceItem(backupFile, DeviceType.File);
restore.Devices.Add(bdi);
restore.Database = dbName;
restore.ReplaceDatabase = true;
restore.PercentCompleteNotification = 10;
restore.SqlRestore(server);
database.Refresh();
database.SetOnline();
server.Refresh();

总之:

  1. 设置Restore.Database属性为新名称,
  2. 设置Restore.ReplaceDatabase属性为true
  3. 使用Restore.RelocateFiles属性指定新的数据和日志文件。