Используйте оператор Kill , чтобы закрыть одно соединение:
Завершает пользовательский процесс, который
на основе идентификатора сеанса (SPID в SQL
Server 2000 и более ранние версии)
Без дополнительных комментариев, вот хранимая процедура, которую мы использовали на протяжении многих лет, чтобы закрыть все соединения, используя kill
. Я уверен, что есть лучший способ без курсора сделать это.
CREATE PROCEDURE kill_database_users @arg_dbname sysname
AS
declare @a_spid smallint
declare @msg varchar(255)
declare @a_dbid int
select
@a_dbid = sdb.dbid
from master..sysdatabases sdb
where sdb.name = @arg_dbname
declare db_users insensitive cursor for
select
sp.spid
from master..sysprocesses sp
where sp.dbid = @a_dbid
open db_users
fetch next from db_users into @a_spid
while @@fetch_status = 0
begin
select @msg = 'kill '+convert(char(5),@a_spid)
print @msg
execute (@msg)
fetch next from db_users into @a_spid
end
close db_users
deallocate db_users