如何使用 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 的活动连接? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

终止会话

调用加入时如何修复“终止调用而没有活动异常”

GCC(libstdc++)运行时如何决定在异常处于活动状态时终止()

informix上如何执行*.sql脚本

几分钟后终止 SQL Server 事务

如何终止 Xamarin 应用程序?