Изменить имя логической базы данных с помощью SMO

Как изменить логическое имя базы данных при восстановлении базы данных с помощью SMO?

/Виктор


person Viktor    schedule 20.02.2010    source источник
comment
Вы имеете в виду имя базы данных или имена файлов? Все приведенные ниже ответы предполагают, что вы имеете в виду логические имена файлов?   -  person Tao    schedule 05.08.2011


Ответы (2)


Вы не можете переименовать файлы логической базы данных с помощью SQL ВОССТАНОВЛЕНИЕ БАЗЫ ДАННЫХ: это не предлагается. Только физические файлы могут быть изменены с помощью WITH MOVE

Вы переименовываете логические файлы с помощью ALTER DATABASE в SQL, как правило.

Похоже, это подтверждается RelocateFile класс СМО.

person gbn    schedule 20.02.2010

Код Рахула правильный: восстановление новых физических файлов и переименование логических файлов — это двухэтапный процесс:

Вызов 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();
person hillstuk    schedule 28.03.2012