sql >> Database >  >> RDS >> Sqlserver

Laat SQL-aanmelding vallen, zelfs als u bent ingelogd

OK, hier is het script dat ik bedacht, dat werkte voor mij. Merk op dat u lid moet zijn van de processadmin serverrol om de verbinding te vinden en te beëindigen en een lid van securityadmin om de login te laten vallen. (Natuurlijk, sysadmin kan alles.)

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. Laatste komma binnen while-lus verwijderen - PHP

  2. Android SQLite LIKE escape-jokerteken

  3. Speciale tekens opslaan in MySQL-database

  4. Mysql :meerdere tafels of één grote tafel?