sql >> Databasteknik >  >> RDS >> Sqlserver

Släpp SQL-inloggning även när du är inloggad

OK, här är manuset jag kom fram till, som fungerade för mig. Observera att du måste vara medlem i processadmin serverroll för att hitta och döda anslutningen och en medlem av securityadmin för att avbryta inloggningen. (Självklart, sysadmin kan göra vad som helst.)

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


  1. LISTAGG motsvarighet med fönsterklausul

  2. Det gick inte att kontakta pgAdmin 4-servern:Allvarligt fel

  3. Grunderna för främmande nycklar i MySQL?

  4. Logga DBMS_OUTPUT.Put_Line-utgång i tabell i Oracle med DBMS_OUTPUT.Get_Lines