2011-08-16 48 views
4

私はC#、.NET 3.5、およびSMOを使用して、SQL Serverの他のいくつかのデータベース(DEVとテストデータベース)にデータベース(本番データベース)のコピーを作成します。新しい名前の.bakファイルからデータベースを復元する

データベースからバックアップを作成して復元することができました。もちろんこれは既存のものを上書きします。私はthis CodeProject guideを使用しました。

データベースのバックアップを別のデータベースに復元するには、同じサーバー上に別の名前を付けます。要するに

+0

データベースプロパティを新しい名前に設定する必要があります。また、ログ/データファイル名が既存のものではないことを確認する必要があります。 おそらく重複http://stackoverflow.com/questions/1627145/smo-restoring-to-a-different-db –

答えて

5

  1. が新しいデータを指定し、 Restore.RelocateFilesプロパティを使用してログファイルを、 trueRestore.ReplaceDatabaseプロパティを設定し、新しい名前に Restore.Databaseプロパティを設定します。詳しい説明については

Getting Started with SMO in SQL 2005 - Restores品の新しい場所セクションにデータベースの復元をお読みください。

+0

すごい人!あなたは私の一日を救った!私は本当に助けに感謝しています! – Martin

7
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(); 
関連する問題