【发布时间】:2026-02-19 18:00:02
【问题描述】:
什么是强制关闭与数据库的所有其他连接的 SQL 命令。 这是针对 SQL Server 2008 的
【问题讨论】:
标签: sql sql-server sql-server-2008
什么是强制关闭与数据库的所有其他连接的 SQL 命令。 这是针对 SQL Server 2008 的
【问题讨论】:
标签: sql sql-server sql-server-2008
一种使用ROLLBACK IMMEDIATE的方式
ALTER DATABASE foo SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
您可以使用 KILL,但也想防止重新连接。
【讨论】:
使用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
【讨论】: