Восстановить базу данных из файла .bak с новым именем - PullRequest
5 голосов
/ 16 августа 2011

Я пою на C #, .NET 3.5 и SMO, чтобы создать копию базы данных (нашей производственной базы данных) для некоторых других баз данных (наших DEV и Test-database) в SQL Server 2005.

Мне удалось создать резервную копию из базы данных и восстановить ее. это, конечно, перезаписывает существующий. Я использовал это руководство по CodeProject .

Как восстановить резервную копию базы данных в другую базу данных с другим именем на том же сервере?

Ответы [ 2 ]

9 голосов
/ 03 октября 2011
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();
5 голосов
/ 16 августа 2011

Короче говоря:

  1. установить для свойства Restore.Database новое имя,
  2. установите для свойства Restore.ReplaceDatabase значение true,
  3. укажите новые данные и файлы журнала, используя свойство Restore.RelocateFiles.

Подробное объяснение см. В разделе Восстановление базы данных в новом месте в разделе Начало работы с SMO в SQL 2005 - восстанавливает статью .

...