Как я могу изменить логическое имя базы данных при восстановлении базы данных с SMO?
/Viktor
Невозможно переименовать файлы логической базы данных с помощью SQL ВОССТАНОВИТЬ БАЗУ ДАННЫХ : это не предлагается. С помощью WITH MOVE
можно изменять только физические файлы. Обычно вы переименовываете логические файлы с помощью ALTER DATABASE в SQL.
Это подтверждается классом SMO RelocateFile .
//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");