none
Trigger DDL de Logon RRS feed

  • Pergunta

  • Senhores,

    Eu criei a seguinte trigger:

    ALTER TRIGGER TR_AuditLogin ON ALL SERVER
    WITH EXECUTE AS SELF
    FOR LOGON
    AS
    IF ORIGINAL_LOGIN()= 'assrolle' and APP_NAME () = 'Microsoft SQL Server Management Studio'
    BEGIN
        -- encerra conexao nao autorizada
        ROLLBACK
    END
    GO

    Ela deveria bloquear os acessos do usuario "ASSROLLE" porem quando eu habilito ela ta bloqueando todos usuarios e não apenas o especificado na query.


    quarta-feira, 1 de outubro de 2014 21:26

Respostas

  • Bom dia Renata,

    Olha esse exemplo:

    USE master;
    GO
    CREATE LOGIN login_test WITH PASSWORD = '3KHJ6dhx(0xVYsdf' MUST_CHANGE,
        CHECK_EXPIRATION = ON;
    GO
    GRANT VIEW SERVER STATE TO login_test;
    GO
    CREATE TRIGGER connection_limit_trigger
    ON ALL SERVER WITH EXECUTE AS 'login_test'
    FOR LOGON
    AS
    BEGIN
    IF ORIGINAL_LOGIN()= 'login_test' AND
        (SELECT COUNT(*) FROM sys.dm_exec_sessions
                WHERE is_user_process = 1 AND
                    original_login_name = 'login_test') > 3
        ROLLBACK;
    END;

    http://msdn.microsoft.com/en-us/library/bb326598.aspx

    Att,


    Ricardo Cortes Microsoft Contingent Staff

    Esse contedo e fornecido sem garantias de qualquer tipo, seja expressa ou implicita.

    MSDN Community Support

    quinta-feira, 2 de outubro de 2014 13:24

Todas as Respostas

  • Renata,

    Altera esse inicio ..

    CREATE trigger [t_dba_bloqueia_login]
    on all server 
    for logon
    as
    begin 

    Use "SYSTEM_USER = 'assrolle' no lugar de original_login().


    Tulio Rosa | http://tuliorosa.com.br | Se resolveu seu problema, marque como resposta ou vote


    quinta-feira, 2 de outubro de 2014 13:10
  • Bom dia Renata,

    Olha esse exemplo:

    USE master;
    GO
    CREATE LOGIN login_test WITH PASSWORD = '3KHJ6dhx(0xVYsdf' MUST_CHANGE,
        CHECK_EXPIRATION = ON;
    GO
    GRANT VIEW SERVER STATE TO login_test;
    GO
    CREATE TRIGGER connection_limit_trigger
    ON ALL SERVER WITH EXECUTE AS 'login_test'
    FOR LOGON
    AS
    BEGIN
    IF ORIGINAL_LOGIN()= 'login_test' AND
        (SELECT COUNT(*) FROM sys.dm_exec_sessions
                WHERE is_user_process = 1 AND
                    original_login_name = 'login_test') > 3
        ROLLBACK;
    END;

    http://msdn.microsoft.com/en-us/library/bb326598.aspx

    Att,


    Ricardo Cortes Microsoft Contingent Staff

    Esse contedo e fornecido sem garantias de qualquer tipo, seja expressa ou implicita.

    MSDN Community Support

    quinta-feira, 2 de outubro de 2014 13:24
  • mesmo alterando para SYSTEM_USER  e passando o login, a trigger bloqueia geral e não apenas o "assrolle" como deveria
    quinta-feira, 2 de outubro de 2014 17:32
  • Deu certo! Obrigado
    quarta-feira, 8 de outubro de 2014 18:50