Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Odrzuć login SQL nawet po zalogowaniu

OK, oto scenariusz, który wymyśliłem, który dla mnie zadziałał. Pamiętaj, że musisz być członkiem processadmin rola serwera, aby znaleźć i zabić połączenie oraz członek securityadmin aby usunąć login. (Oczywiście sysadmin może zrobić wszystko.)

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wyeksportować wszystkie dane z tabeli do wstawianego formatu sql?

  2. Znajdź łączną liczbę minut ignorując nakładanie się (konwertuj odpowiedź opartą na kursorze na CTE)

  3. dodanie daty w funkcji sql

  4. Składnia zapytania aktualizującego SQL z wewnętrznym sprzężeniem

  5. Czy rozmiar używany z NVARCHAR ma znaczenie?