Иногда при администрировании SQL Server необходимо завершить все активные подключения к базе данных. Это может быть нужно перед восстановлением базы или её переносом. Ниже приведён простой T-SQL скрипт, который позволяет это сделать.
Описание скрипта
Скрипт использует CURSOR для перебора всех сеансов, подключенных к базе данных, и завершает их командой KILL. Замените NameDB на имя вашей базы.
Сам скрипт T-SQL
--У
биваем все активные сеансы подключенные к базе NameDB
DECLARE @spid VARCHAR(200)
DECLARE @kill_spid VARCHAR(200)
DECLARE kill_session CURSOR FOR
SELECT spid FROM [master].dbo.sysprocesses
WHERE dbid=db_id('NameDB')
--spid идентификатор сеанса SQL Server.
--вместо NameDB не забудьте вписать свою базу.
OPEN kill_session;
FETCH NEXT FROM kill_session INTO @spid
WHILE @@FETCH_STATUS = 0
BEGIN
SET @kill_spid='KILL ' + @spid + char(10)
--PRINT @kill_spid
EXEC (@kill_spid)
FETCH NEXT FROM kill_session
INTO @spid;
END;Пояснение к коду
CURSOR– перебирает все активные подключения к базе.db_id('NameDB')– получает идентификатор базы данных.KILL spid– завершает активный сеанс SQL Server.- Закомментированная строка
PRINTпозволяет выводить список завершённых подключений для проверки.
Советы по безопасности
Перед выполнением скрипта убедитесь, что нет критичных операций в активных сессиях, иначе их завершение может привести к потерям данных.
FAQ
Что делает скрипт?
Скрипт завершает все активные подключения к указанной базе данных в SQL Server.
Можно ли использовать скрипт на продакшн-сервере?
Да, но с осторожностью. Перед выполнением убедитесь, что завершение сеансов не нарушит работу критичных приложений.
Что заменить в скрипте?
Замените NameDB на имя вашей базы данных.
clear



