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