Фев 272025
 

Иногда возникает необходимость перевести какую либо СУБД в однопользовательский режим, чтобы никто не мешался, и не дай бог не испортил БД. Но при этом, существует проблема, когда SQL не дает возможности перевести БД обратно в многопользовательский режим. Как это исправить, указано в скрипте ниже.
Что он делает:
1. Находит процессы, которые не дают подключиться к необходимой БД.
2. Убивает процессы, связанные с необходимой БД.
3. Переводит БД в режим MULTI_USER.

USE master
GO
DECLARE @kill varchar(max) = '';
SELECT @kill = @kill + 'KILL ' + CONVERT(varchar(10), spid) + '; '
FROM master..sysprocesses
WHERE spid > 50 AND dbid = DB_ID('<your_db_name>')
EXEC(@kill);

GO
SET DEADLOCK_PRIORITY HIGH
ALTER DATABASE [</your_db_name><your_db_name>] SET MULTI_USER WITH NO_WAIT
ALTER DATABASE [</your_db_name><your_db_name>] SET MULTI_USER WITH ROLLBACK IMMEDIATE
GO

Полезные ссылки:
Single mode SQL

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)