2011-08-16 4 views
4

Je chante C#, .NET 3.5 et SMO pour créer une copie d'une base de données (notre base de données de production) vers d'autres bases de données (notre DEV et base de données de test) dans SQL Server 2005.Restaurer la base de données du fichier .bak avec un nouveau nom

J'ai réussi à créer une sauvegarde à partir d'une base de données, et à le restaurer. cela écrase bien sûr celui existant. J'ai utilisé this CodeProject guide. Comment restaurer une sauvegarde d'une base de données dans une autre base de données, avec un nom différent sur le même serveur?

+0

Vous devez définir la propriété Database au nouveau nom. Vous devez également vous assurer que le nom du (des) fichier (s) de journalisation/de données n'utilise pas ceux qui existent déjà. Peut-être dupliquer http://stackoverflow.com/questions/1627145/smo-restoring-to-a-different-db –

Répondre

5

En bref:

  1. définissez la propriété Restore.Database à un nouveau nom,
  2. définissez la propriété Restore.ReplaceDatabase à true,
  3. spécifier de nouvelles données et les fichiers journaux en utilisant la propriété Restore.RelocateFiles.

Pour une explication détaillée, lisez le restauration d'une base de données à un nouvel emplacement section de l'article Getting Started with SMO in SQL 2005 - Restores.

+0

Les gars géniaux! Tu as sauvé ma journée! Im vraiment reconnaissant pour l'aide! – 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(); 
Questions connexes