Иногда при администрировании 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