Назад | Перейти на главную страницу

База данных SQL Server 2008 R2 застряла в однопользовательском режиме

Мы пытались восстановить базу данных, но по какой-то причине не удалось. Теперь он застрял в однопользовательском режиме. Вот что я пробовал:

select d.name, d.dbid, spid, login_time, nt_domain, nt_username, loginame
from sysprocesses p inner join sysdatabases d on p.dbid = d.dbid
where d.name = 'mydb'

Он вернул один результат, и я убил его, используя kill 77. Я где-то читал, что вы также должны убить id плюс один для хорошей меры, поэтому мы также запустили kill 78. На этом этапе повторное выполнение запроса вернуло 0 соединений.

Я пробовал все это:

exec sp_dboption 'mydb', 'single user', 'FALSE';

SET DEADLOCK_PRIORITY HIGH
exec sp_dboption 'mydb', 'single user', 'FALSE';

ALTER DATABASE [mydb] SET MULTI_USER WITH NO_WAIT

ALTER DATABASE [mydb] SET MULTI_USER WITH ROLLBACK IMMEDIATE

Они все дают мне

Msg 5064, уровень 16, состояние 1, строка 1
В настоящее время невозможно изменить состояние или параметры базы данных mydb. База данных находится в однопользовательском режиме, и в настоящее время к ней подключен пользователь.

Я понимаю, что, возможно, я мог бы решить проблему, перезапустив службу sql или, возможно, перезагрузив сервер. Однако это производственный сервер, поэтому я бы предпочел его избегать.

Какие-либо предложения?

Взгляните на SPID

USE master 
EXEC sp_who

Оттуда отработайте db и убейте соответствующую блокировку.

Переход из однопользовательского режима в многопользовательский

ALTER DATABASE 'DB NAME' SET MULTI_USER WITH ROLLBACK IMMEDIATE