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