如何使用 SQL 终止基于 DB_NAME 的活动连接? [复制]
Posted
技术标签:
【中文标题】如何使用 SQL 终止基于 DB_NAME 的活动连接? [复制]【英文标题】:How to kill active connections based on DB_NAME using SQL? [duplicate] 【发布时间】:2015-10-06 09:26:42 【问题描述】:我目前正在使用该应用程序通过前端连接到客户数据库,并运行以下显示活动连接的查询:
SELECT DB_NAME(DBID) AS DBNAME,
COUNT(DBID) AS NUMBEROFCONNECTIONS,
LOGINAME AS LOGINNAME
FROM SYS.SYSPROCESSES
WHERE DBID > 0
GROUP BY DBID, LOGINAME
我有能力在应用程序的前端运行 SQL,因此我如何根据 DB_NAME(DBID) = 'CustomerDB'
终止所有活动连接
使用 SQL?
【问题讨论】:
提取 SPID 并在 KILL 命令中使用它 我一键找到答案,你真的去研究了吗? 【参考方案1】:KILL
命令可能不适用于新建立的连接。您可以尝试将数据库置于Single_User
模式,而不是使用ALTER
之类的语句
ALTER DATABASE CustomerDB
SET SINGLE_USER WITH ROLLBACK IMMEDIATE
【讨论】:
【参考方案2】:USE master
GO
DECLARE @kill varchar(8000) = '';
SELECT @kill = @kill + 'kill ' + CONVERT(varchar(5), spid) + ';'
FROM master..sysprocesses
WHERE dbid = db_id('MyDB')
EXEC(@kill);
致谢:Script to kill all connections to a database (More than RESTRICTED_USER ROLLBACK)
【讨论】:
这应该被标记为重复,而不是作为你自己的答案发布。 @EvaldasBuinauskas ,是的,我发布了它,因为似乎提出问题的人没有尝试自己研究,所以我试图提供帮助..这就是为什么我把信用..是的,我也标记了这个问题是重复的。 @Japz Divino:你很粗鲁 @PriceCheaperton 我的错,因为我在阅读您的问题时尝试进行研究,并且我也在 *** 站点中找到了答案,所以我想知道您是否真的尝试搜索。无论如何,如果我在评论中冒犯了你,我深表歉意。 没有问题......以上是关于如何使用 SQL 终止基于 DB_NAME 的活动连接? [复制]的主要内容,如果未能解决你的问题,请参考以下文章