Подтвердить что ты не робот

Как переименовать базу данных в многопользовательском режиме

Я работаю над SQL SERVER 2008 и 2008 R2. Как переименовать базу данных в многопользовательском режиме? Я использую sp_rename, но он возвращает эту ошибку:

Msg 15225, уровень 11, состояние 1, процедура sp_rename, строка 338

4b9b3361

Ответ 1

Вы не можете переименовать базу данных во время ее использования. Либо дождаться окна обслуживания, либо заставить базу данных работать в однопользовательском режиме (который вытолкнет всех):

USE [master];
GO
ALTER DATABASE foo SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
--EXEC sys.sp_renamedb @dbname = N'foo', @newname = N'bar';
ALTER DATABASE foo MODIFY NAME = bar; -- preferred way
GO
ALTER DATABASE bar SET MULTI_USER;

Ответ 2

Вы не можете использовать sp_rename для переименования базы данных - вопрос sp был бы sp_renamedb. Тем не менее, это должно быть удалено в будущей версии SQL Server, и предпочтительный метод:

ALTER DATABASE dbname MODIFY NAME = newdbname;

Но вы не можете сделать это в любом случае без исключительной блокировки в базе данных.

Ответ 3

Вы можете открыть диспетчер конфигурации сервера sql и остановить и запустить службу, это работает для меня с SQL Server 2008 и 2012 как раз отлично.

Затем переименуйте базу данных прямо в студию управления сервером sql.

"Работает для меня"

Не действительно "оговорка", но скажу, что вы хотите восстановить ту же самую базу данных, вы входите в опции и меняете имя mdf и ldf