File tree 1 file changed +37
-0
lines changed 1 file changed +37
-0
lines changed Original file line number Diff line number Diff line change
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
You can’t perform that action at this time.
0 commit comments