SQL Server 2008 R2 застрял в однопользовательском режиме
Выполняя развертывание БД (из проекта базы данных VS SQL Server) в локальной базе данных, которая не удалась, база данных осталась в состоянии, когда он имеет режим одиночного пользователя (развертывание выполняется как однопользовательский режим),
Когда я подключаюсь к нему из SSMS и пробую что-то вроде следующего:
ALTER DATABASE MyDatabase
SET MULTI_USER;
GO
Я получаю сообщение об ошибке:
В настоящее время невозможно изменить состояние или параметры базы данных "MyDatabase". База данных находится в однопользовательском режиме, и пользователь в настоящее время подключен к ней.
Я пробовал использовать базу данных в автономном режиме, и SSMS говорит мне, что она преуспевает, но, похоже, она ничего не делает. До сих пор мне удалось обойти это, сбросив и воссоздав базу данных (что вроде хорошо, потому что это только локальная тестовая база данных). Тем не менее, я хотел бы иметь возможность reset статуса.
Как я могу убедить SQL Server взять эту базу данных из однопользовательского режима?
Ответы
Ответ 1
В первом запуске следующий запрос в основной базе данных
exec sp_who
Если вы не можете найти преступника, попробуйте
SELECT request_session_id FROM sys.dm_tran_locks
WHERE resource_database_id = DB_ID('YourDatabase')
Затем уничтожьте весь процесс, который использует вашу базу данных, со следующим запросом:
KILL spid
Затем запустите следующий запрос:
USE Master
ALTER DATABASE YourDatabase SET MULTI_USER
Ответ 2
Это ответ был здесь, код:
use master
ALTER DATABASE YourDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE
--do you stuff here
ALTER DATABASE YourDatabase SET MULTI_USER
Ответ 3
Используйте DAC (выделенное соединение с администратором). Убедитесь, что вы включили его сначала
В SSMS-типа в admin: для имени сервера
после подключения к мастеру ALTER DATABASE SET MULTI_USER
Ответ 4
Попробуйте выполнить следующие команды
Сначала запустите эти три команды
USE [master]
SET DEADLOCK_PRIORITY HIGH
exec sp_dboption MyDBName, 'single user', 'FALSE';
Второй запуск этих двух команд
ALTER DATABASE MyDBName SET MULTI_USER WITH NO_WAIT
ALTER DATABASE MyDBName SET MULTI_USER WITH ROLLBACK IMMEDIATE