强制关闭与数据库的所有其他连接的SQL命令是什么。 这适用于SQL Server 2008
答案 0 :(得分:9)
ALTER DATABASE foo SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
您可以使用KILL,但也希望阻止重新连接。
答案 1 :(得分:2)
使用Kill语句关闭单个连接:
终止用户进程 基于会话ID(SQL中的SPID) 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