我尝试过以下代码来杀死除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'帐号?
非常感谢您的支持。
/保
答案 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