什么是强制关闭与数据库的所有其他连接的SQL命令

时间:2010-05-25 18:57:12

标签: sql sql-server sql-server-2008

强制关闭与数据库的所有其他连接的SQL命令是什么。 这适用于SQL Server 2008

2 个答案:

答案 0 :(得分:9)

使用ROLLBACK IMMEDIATE

的一种方法
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