Облачное хранилище

Иногда при администрировании 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;
T-SQL скрипт для удаления активных подключений к базе SQL Server
Пример скрипта T-SQL, который завершает все активные сессии подключения к базе данных SQL Server

Пояснение к коду

  • CURSOR – перебирает все активные подключения к базе.
  • db_id('NameDB') – получает идентификатор базы данных.
  • KILL spid – завершает активный сеанс SQL Server.
  • Закомментированная строка PRINT позволяет выводить список завершённых подключений для проверки.

Советы по безопасности

Перед выполнением скрипта убедитесь, что нет критичных операций в активных сессиях, иначе их завершение может привести к потерям данных.

FAQ

Что делает скрипт?

Скрипт завершает все активные подключения к указанной базе данных в SQL Server.

Можно ли использовать скрипт на продакшн-сервере?

Да, но с осторожностью. Перед выполнением убедитесь, что завершение сеансов не нарушит работу критичных приложений.

Что заменить в скрипте?

Замените NameDB на имя вашей базы данных.

clear