Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Премахнете SQL влизането дори докато сте влезли

Добре, ето сценария, който измислих и който работи за мен. Обърнете внимание, че трябва да сте член на администратора на процеса сървърна роля за намиране и прекъсване на връзката и член на администратор по сигурността за да изпуснете влизането. (Разбира се, сисадмин може да направи всичко.)

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. Елиминиране на отклонения чрез стандартно отклонение в SQL Server

  2. Необходим ли е първичен ключ в SQL Server?

  3. Какво е @@MAX_PRECISION в SQL Server?

  4. SQL Server:използвайте параметър в CREATE DATABASE

  5. В SQL Server 2008 мога да предам параметър със стойност на таблица към моята съхранена процедура от NHibernate. Как да постигна същото в Oracle