SQL Server:终止MASTER数据库保持的活动连接

时间:2016-11-10 16:09:36

标签: sql sql-server connection master

我尝试过以下代码来杀死除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来杀死你自己的进程。"

请告诉我,如何从MASTER数据库中删除所有21个活动连接,该数据库由' sa'帐号?

非常感谢您的支持。

/保

1 个答案:

答案 0 :(得分:0)

您可以通过将数据库置于单用户模式来终止与数据库的所有活动连接,我通常在尝试通过现有的inuse数据库进行恢复时执行此操作。像......那样......

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