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

выполнив развертывание БД (из проекта базы данных VS SQL Server) в локальной базе данных, которое завершилось неудачно, база данных осталась в состоянии, в котором остался однопользовательский режим (развертывание выполняется как однопользовательский режим).

когда я подключаюсь к нему из SSMS и пытаюсь сделать что-то вроде следующего:

ALTER DATABASE MyDatabase
SET MULTI_USER;
GO

Я получаю сообщение об ошибке:

изменения состояния или параметров базы данных "MyDatabase" не могут быть сделаны в это время. База данных находится в однопользовательский режим, и пользователь в настоящее время подключен к нему.

Я попытался отключить базу данных, что SSMS говорит мне об успехе, но, похоже, на самом деле ничего не делает. До сих пор я мог обойти это только путем удаления и воссоздания базы данных (что вроде нормально, потому что это только локальная тестовая база данных). Тем не менее, я хотел бы иметь возможность сбросить статус.

Как я могу убедить SQL Server взять эту базу данных из одного пользователя режим?

4 ответов


при первом запуске следующего запроса в master database

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

Это был ответ.здесь, код:

use master
ALTER DATABASE YourDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE 

--do you stuff here 

ALTER DATABASE YourDatabase SET MULTI_USER

использовать DAC (выделенное соединение администратора). Убедитесь, что вы включили его первый В SSMS введите admin: для имени сервера после подключения к master ALTER DATABASE SET MULTI_USER


попробуйте следующие команды

сначала выполните эти три команды

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