Ошибка при переименовании базы данных в SQL Server 2008 R2
Я использую этот запрос для переименования базы данных:
ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]
Но при выдаче ошибки возникает ошибка:
Msg 5030, уровень 16, состояние 2, строка 1
База данных не может быть заблокирована исключительно для выполнения операции.
Что-то не так с моим запросом?
Ответы
Ответ 1
Вы можете попробовать установить базу данных в однопользовательский режим.
fooobar.com/questions/25463/...
use master
ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]
ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER
Ответ 2
-
Установите базу данных в один режим:
ALTER DATABASE dbName
SET SINGLE_USER WITH ROLLBACK IMMEDIATE
-
Попробуйте переименовать базу данных:
ALTER DATABASE dbName MODIFY NAME = NewName
-
Установите базу данных в режим Многопользовательский режим:
ALTER DATABASE NewName
SET MULTI_USER WITH ROLLBACK IMMEDIATE
Ответ 3
Сначала попробуйте закрыть все подключения к вашей базе данных:
use master
ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]
ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER
Взято из здесь
Ответ 4
Вы также можете щелкнуть правой кнопкой мыши свою базу данных в Обозревателе объектов и перейти в "Свойства". Оттуда перейдите в раздел "Параметры". Прокрутите весь путь вниз и установите параметр Ограничить доступ к SINGLE_USER. Измените имя своей базы данных, затем вернитесь и верните его в MULTI_USER.
Ответ 5
Это потому, что кто-то еще обращается к базе данных. Поместите базу данных в однопользовательский режим, затем переименуйте ее.
Эта ссылка может помочь вам решить проблему: http://msdn.microsoft.com/en-IN/library/ms345378(v=sql.105).aspx
а также эту ссылку: http://msdn.microsoft.com/en-us/library/ms345378.aspx
Ответ 6
Измените базу данных на однопользовательский режим, как показано в других ответах
Иногда даже после преобразования в однопользовательский режим может использоваться только подключение к базе данных.
Чтобы закрыть соединение даже после преобразования в однопользовательский режим, попробуйте:
select * from master.sys.sysprocesses
where spid>50 -- don't want system sessions
and dbid = DB_ID('BOSEVIKRAM')
Посмотрите на результаты и посмотрите идентификатор соединения с соответствующей базой данных.
Затем используйте приведенную ниже команду, чтобы закрыть это соединение (там должен быть только один, так как база данных теперь находится в однопользовательском режиме)
KILL connection_ID
Заменить connection_id с идентификатором в результатах первого запроса
Ответ 7
Это сделало это для меня:
USE [master];
GO
ALTER DATABASE [OldDataBaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
EXEC sp_renamedb N'OldDataBaseName', N'NewDataBaseName';
-- Add users again
ALTER DATABASE [NewDataBaseName] SET MULTI_USER
GO
Ответ 8
1. набор базы данных 1-й однопользовательский режим
ALTER DATABASE BOSEVIKRAM УСТАНОВИТЬ SINGLE_USER WITH ROLLBACK IMMEDIATE
2. ИЗМЕНИТЬ БАЗУ ДАННЫХ
ALTER DATABASE BOSEVIKRAM ИЗМЕНИТЬ ИМЯ = [BOSEVIKRAM_Deleted]
3. НАСТРОЙКА МУЛЬТИЗИРОВАННОГО УСТРОЙСТВА
ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER WITH ROLLBACK IMMEDIATE
Ответ 9
use master
ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE
exec sp_renamedb 'BOSEVIKRAM','BOSEVIKRAM_Deleted'
ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER
Ответ 10
Другой способ закрыть все соединения:
Администрирование > Просмотр локальных служб
Остановить/запустить службу SQL Server (MSSQLSERVER)