使用新名称从.bak文件还原数据库

时间:2011-08-16 14:00:48

标签: c# .net sql-server-2005 .net-3.5 smo

我正在唱C#,.NET 3.5和SMO,以便在SQL Server 2005中为其他数据库(我们的DEV和测试数据库)创建数据库(我们的生产数据库)的副本。

我已设法从数据库创建备份,以恢复它。这当然会覆盖现有的。我使用过this CodeProject guide

如何将数据库的备份还原到另一个数据库,在同一台服务器上使用不同的名称?

2 个答案:

答案 0 :(得分:9)

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 :(得分:5)

简而言之:

  1. Restore.Database属性设置为新名称
  2. Restore.ReplaceDatabase属性设置为true
  3. 使用Restore.RelocateFiles属性指定新数据和日志文件。
  4. 有关详细说明,请阅读Getting Started with SMO in SQL 2005 - Restores文章中的将数据库还原到新位置部分。