Skip to content

Commit 11016b3

Browse files
authored
Create spKILL_Users_Connected_to_DB.sql
1 parent 365f776 commit 11016b3

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

spKILL_Users_Connected_to_DB.sql

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
2+
SET ANSI_NULLS ON
3+
GO
4+
SET QUOTED_IDENTIFIER ON
5+
GO
6+
7+
CREATE OR ALTER PROCEDURE [dbo].[spKILL_Users_Connected_to_DB]
8+
@argDB_Name VARCHAR(50)
9+
AS
10+
BEGIN
11+
--Kill Users (Restore Needs Exclusive Access to the Database)
12+
DECLARE @lcSPID SMALLINT, @lcHostName VARCHAR(100), @lcCMD VARCHAR(100)
13+
14+
DECLARE Cursor_Processes CURSOR LOCAL FAST_FORWARD READ_ONLY FOR
15+
SELECT DISTINCT L.request_session_id, S.[host_name]
16+
FROM sys.dm_tran_locks L WITH (NOLOCK)
17+
LEFT JOIN sys.databases D WITH (NOLOCK) ON L.resource_database_id = D.database_id
18+
LEFT JOIN sys.dm_exec_sessions S WITH (NOLOCK) ON L.request_session_id = S.session_id
19+
WHERE D.[name]=@argDB_Name AND L.request_session_id <> @@SPID --don't kill yourself
20+
21+
OPEN Cursor_Processes
22+
FETCH NEXT FROM Cursor_Processes INTO @lcSPID, @lcHostName
23+
24+
WHILE @@FETCH_STATUS=0
25+
BEGIN
26+
IF EXISTS (SELECT session_id FROM sys.dm_exec_sessions S WITH (NOLOCK) WHERE session_id=@lcSPID AND [host_name] = @lcHostName) BEGIN
27+
SELECT @lcCMD = 'KILL ' + CONVERT(VARCHAR(5), @lcSPID)
28+
EXEC(@lcCMD)
29+
--WAITFOR DELAY '00:00:01'
30+
END
31+
32+
FETCH NEXT FROM Cursor_Processes INTO @lcSPID, @lcHostName
33+
END
34+
35+
CLOSE Cursor_Processes
36+
DEALLOCATE Cursor_Processes
37+
END

0 commit comments

Comments
 (0)