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? P>
/ viktor p>
3 Réponses :
Vous ne pouvez pas renommer les fichiers de base de données logiques avec un SQL Restaurer la base de données A>: ça n'est pas offert. Seuls les fichiers physiques peuvent être changés en utilisant avec déplacement p>
Vous renommez des fichiers logiques à l'aide de modifier la base de données dans SQL, normalement . p>
Ceci semble être confirmé par le DELODEFILE CLASSE SMO. P>
//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");
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 pour faire de nouveaux logiques noms, utilisez le Toutefois, si vous souhaitez modifier le nom de la base de données à l'aide de SMO: P> < Pré> xxx pré> p> relectoirefile code> 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é code>" exceptions " p> renommé () code> appelle ensuite, comme indiqué dans le code de Rahul. P>
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?