sql >> Databáze >  >> RDS >> Sqlserver

Zrušte přihlášení SQL, i když jste přihlášeni

OK, tady je scénář, který jsem vymyslel a který se mi osvědčil. Upozorňujeme, že musíte být členem processadaminu role serveru k nalezení a ukončení připojení a člena securityadmin pro zrušení přihlášení. (Samozřejmě, sysadmin může dělat cokoliv.)

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. Načítání dat Clobu jako řetězce (eager) přes org.hibernate.Query Hibernate

  2. PLS-00103 vytvoření externí tabulky s dynamickým SQL

  3. Sledování synchronizace replik skupiny dostupnosti

  4. Jak odstraním chybu 3002?