Как изменить имя логической базы данных при восстановлении базы данных с помощью SMO?Изменение имени логической базы данных с помощью SMO
/Viktor
Как изменить имя логической базы данных при восстановлении базы данных с помощью SMO?Изменение имени логической базы данных с помощью SMO
/Viktor
Вы не можете переименовать логические файлы базы данных с помощью SQL RESTORE DATABASE: это не предлагается. Только физические файлы могут быть изменены с помощью WITH MOVE
Вы обычно переименовываете логические файлы с помощью ALTER DATABASE в SQL.
Это, возможно, будет подтверждено классом SMO .
//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");
код Rahul правильна: Восстановление на новые физические файлы и переименование логических файлов является двухступенчатый процессом:
RelocateFile
вызова говорит «карта это логическое имя файла этого физического файл». Вы должны использовать логические имена файлов исходной резервной копии здесь НЕ новые, иначе вы, скорее всего, получите «.mdf cannot be overwritten
» исключения.
Чтобы создать новые логические имена, используйте вызовы Rename()
, как показано в коде Рахула.
Однако, если вы хотите изменить имя базы данных с помощью SMO:
var srvConn = new ServerConnection(serverName)
{
LoginSecure = false,
Login = dbUserName,
Password = dbUserPassword,
DatabaseName = "master",
};
var mainDb = new Database(srvConn, "old database name");
mainDb.Rename("new database name");
mainDb.Refresh();
Вы имеете в виду имя базы данных или имена файлов? Все приведенные ниже ответы предполагают, что вы имеете в виду логические имена файлов? – Tao