9
votes

Changer le nom de la base de données logique avec SMO

Comment puis-je modifier le nom de la base de données logique lors de la restauration d'une base de données avec SMO?

/ viktor


1 commentaires

Voulez-vous dire le nom de la base de données ou les noms de fichiers? Toutes les réponses ci-dessous semblent supposer que vous voulez dire les noms de fichiers logiques?


3 Réponses :


5
votes

0 commentaires

12
votes
//restore is the Restore object in SMO

restore.RelocateFiles.Add(new RelocateFile(SourceDataFile.Name, Path.Combine(destinationDirectory, destination.Database + ".mdf")));
restore.RelocateFiles.Add(new RelocateFile(SourceLogFile.Name, Path.Combine(destinationDirectory, destination.Database + "_log.ldf")));

restore.SqlRestore(destinationServer);

var destinationDatabase = destinationServer.Databases[destinationDatabaseName];

//renaming the logical files does the trick

destinationDatabase.FileGroups[0].Files[0].Rename(destinationDatabaseName);
destinationDatabase.LogFiles[0].Rename(destinationDatabaseName + "_log");

0 commentaires

0
votes

Le code de Rahul est correct: la restauration des nouveaux fichiers physiques et le renommer des fichiers logiques est un processus en deux étapes:

Le relectoirefile appel dit "cartographique ce nom de fichier logique sur ce fichier physique" . Vous devez utiliser les noms de fichiers logiques de la sauvegarde originale ici non neufs, sinon vous êtes susceptible d'obtenir " .mdf ne peut pas être écrasé " exceptions "

pour faire de nouveaux logiques noms, utilisez le renommé () appelle ensuite, comme indiqué dans le code de Rahul.

Toutefois, si vous souhaitez modifier le nom de la base de données à l'aide de SMO: < Pré> xxx


0 commentaires