我在C#,.NET 3.5和SMO上爲SQL Server中的其他數據庫(我們的DEV和測試數據庫)創建一個數據庫副本(我們的生產數據庫) 2005.使用新名稱從.bak文件恢復數據庫
我已經設法從數據庫創建一個備份來恢復它。這當然會覆蓋現有的。我已經使用this CodeProject guide。
如何將數據庫的備份恢復到另一個數據庫,並在同一臺服務器上使用不同的名稱?
我在C#,.NET 3.5和SMO上爲SQL Server中的其他數據庫(我們的DEV和測試數據庫)創建一個數據庫副本(我們的生產數據庫) 2005.使用新名稱從.bak文件恢復數據庫
我已經設法從數據庫創建一個備份來恢復它。這當然會覆蓋現有的。我已經使用this CodeProject guide。
如何將數據庫的備份恢復到另一個數據庫,並在同一臺服務器上使用不同的名稱?
簡而言之:
Restore.Database
屬性設置爲一個新的名字,Restore.ReplaceDatabase
屬性true
,Restore.RelocateFiles
財產日誌文件。有關詳細說明,請閱讀將數據庫還原到Getting Started with SMO in SQL 2005 - Restores文章的新位置部分。
真棒傢伙!你救了我的一天!我非常感謝幫助! – Martin
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();
您必須將Database屬性設置爲新名稱。您還必須確保日誌/數據文件的名稱不會激活現有的日誌/數據文件。 也許重複http://stackoverflow.com/questions/1627145/smo-restoring-to-a-different-db –