我正在唱C#,.NET 3.5和SMO,以便在SQL Server 2005中为其他数据库(我们的DEV和测试数据库)创建数据库(我们的生产数据库)的副本。
我已设法从数据库创建备份,以恢复它。这当然会覆盖现有的。我使用过this CodeProject guide。
如何将数据库的备份还原到另一个数据库,在同一台服务器上使用不同的名称?
答案 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)
简而言之:
Restore.Database
属性设置为新名称Restore.ReplaceDatabase
属性设置为true
,Restore.RelocateFiles
属性指定新数据和日志文件。有关详细说明,请阅读Getting Started with SMO in SQL 2005 - Restores文章中的将数据库还原到新位置部分。