sql >> Database teknologi >  >> RDS >> Sqlserver

Drop SQL-login, selvom du er logget ind

OK, her er det script, jeg fandt på, som virkede for mig. Bemærk, at du skal være medlem af procesadministratoren serverrolle for at finde og dræbe forbindelsen og et medlem af securityadmin for at droppe login. (Selvfølgelig, sysadmin kan gøre hvad 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. Find værdier, der ikke findes i en tabel

  2. PostgreSQL/performance én generel markør eller opret for hver forespørgsel

  3. Afkort (ikke runde) decimaler i SQL Server

  4. send REFCURSOR type variabel til Oracle Stored procedure fra Java