ठीक है, यह रही वह स्क्रिप्ट जिसके साथ मैं आया, जिसने मेरे लिए काम किया। ध्यान दें कि आपको प्रक्रिया व्यवस्थापक . का सदस्य बनने की आवश्यकता है कनेक्शन को खोजने और समाप्त करने के लिए सर्वर की भूमिका और securityadmin . का सदस्य लॉगिन छोड़ने के लिए। (बेशक, sysadmin कुछ भी कर सकते हैं।)
DECLARE @loginNameToDrop sysname
SET @loginNameToDrop = '<victim login ID>';
DECLARE sessionsToKill CURSOR FAST_FORWARD FOR
SELECT session_id
FROM sys.dm_exec_sessions
WHERE login_name = @loginNameToDrop
OPEN sessionsToKill
DECLARE @sessionId INT
DECLARE @statement NVARCHAR(200)
FETCH NEXT FROM sessionsToKill INTO @sessionId
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'Killing session ' + CAST(@sessionId AS NVARCHAR(20)) + ' for login ' + @loginNameToDrop
SET @statement = 'KILL ' + CAST(@sessionId AS NVARCHAR(20))
EXEC sp_executesql @statement
FETCH NEXT FROM sessionsToKill INTO @sessionId
END
CLOSE sessionsToKill
DEALLOCATE sessionsToKill
PRINT 'Dropping login ' + @loginNameToDrop
SET @statement = 'DROP LOGIN [' + @loginNameToDrop + ']'
EXEC sp_executesql @statement