【问题标题】:SQL Server : kill active connections hold by MASTER databaseSQL Server:杀死 MASTER 数据库持有的活动连接
【发布时间】:2016-11-10 16:09:36
【问题描述】:

我试过下面的代码来杀死Master数据库以外的SQL连接:

DECLARE @kill varchar(8000) = '';  

SELECT @kill = @kill + 'kill ' + CONVERT(varchar(5), session_id) + ';'  
FROM sys.dm_exec_sessions
WHERE database_id  = db_id('MyDB')

EXEC(@kill);

这段代码对我来说很好用。但是当我运行下面的查询以查看更多活动连接时,我发现我的 MASTER 数据库有 21 个活动连接。

SELECT 
    DB_NAME(dbid) as DBName, 
    COUNT(dbid) as NumberOfConnections,
    loginame as LoginName
FROM
    sys.sysprocesses
WHERE 
    dbid > 0
GROUP BY 
    dbid, loginame

虽然我想关闭与 MASTER 数据库的所有活动连接,但它失败了,错误消息是:“无法使用 KILL 杀死你自己的进程。”

请告诉我,我怎样才能从 'sa' 帐户持有的 MASTER 数据库中杀死所有 21 个活动连接?

非常感谢您的支持。

/保罗

【问题讨论】:

  • 您是否从不同的数据库运行代码?此外,请确保没有打开指向 master 数据库的活动窗口。
  • 嗨,埃里克,谢谢,是的,我做到了,然后错误消息是“只能杀死用户进程”。现在,我正在研究“sa”是如何建立这些连接的,并且它在 23 左右并且始终处于活动状态。

标签: sql sql-server connection master


【解决方案1】:

您可以通过将数据库置于单用户模式来终止与数据库的所有活动连接,我通常在尝试恢复现有的正在使用的数据库时这样做。有点像....

USE master;
GO

ALTER DATABASE [DB_Name]
SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO

USE [DB_Name]  --<-- Grab that single available conncection  
GO

USE master;     --<-- Now no more connections to your database Tadaaaaa... 
GO

【讨论】:

  • 嗨 Ali,谢谢,在这种情况下,您可以杀死所有其他数据库,但不能杀死 Master 数据库。我的确切问题是:我的主数据库通过“sa”登录有 23 个活动连接。我不知道这些连接是如何激活的?或者如果我想杀死那些,该怎么做?按照您建议的方式,您不能终止主数据库连接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-27
  • 2013-07-08
  • 2016-11-03
相关资源
最近更新 更多