none
Trigger de logon RRS feed

  • Pergunta

  • Ola senhores estou presisando fazer uma analise sobre a quantidade de acesso no banco.

    Bom a principio pensei em um a trigger de logon mais me deparei com algumas coisa por exemplo como eu pegaria o nome da base que

    ele esta tentando acesso penso que se ele tiver uma base padrão como acesso ele ira passar os dados da base padrão porem se ele não tiver creio que e ele pegara o da sessão certo?

    E o nome do Host de onde ele esta vindo como eu faria?

    Ex.:

    CREATE TRIGGER connection_limit_trigger
    ON ALL SERVER WITH EXECUTE AS [teste]
    FOR LOGON
    AS
    BEGIN

    INSERT INTO [Analize Acesso]
               ([User]
               ,[DataBase]
               ,[HostName]
               ,[Hora])
         VALUES
               ('teste'
               ,DB_NAME()
               ,get
               ,GETDATE())
               
    END;

    segunda-feira, 20 de agosto de 2012 18:33

Respostas

  • André,

    Eu particularmente evito uitlizar ao máximo qualquer tipo de mecanismo que possa impactar nos processos de comunicaçãi entre a aplicação e o banco. Dizer que nunca utilizei um Trigger de Logon seria mentira, mas somente em casos muito específicos.

    Em alguns cenários cheguei a criar na própria aplicação um log para registrar as informações manipuladas pelos meus usuários.

    Recentemente utilizei no SQL Server 2008 o objeto Audit e foi supreendente o conjunto de recursos e informações que ele oferece.

    O que realmente você esta querendo registrar?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    quarta-feira, 22 de agosto de 2012 15:55
    Moderador

Todas as Respostas

  • Se você quer saber quantidade de acessos a um banco específico, acredito que a Trigger de logon não será muito útil, pois ela seria capaz de registrar os acessos ao servidor, mas não a um determinado banco.

    Nas propriedades do servidor (instância) existe uma aba "Segurança", que possui algumas opções de auditoria de login. Talvez seja útil.

    Em relação ao Host, talvez possa usar HostName:

    Select HOST_NAME()

    Se você ainda precisar de mais ajuda, como para registra acessos a um banco específico, informe por favor a versão e edição que está usando do SQL Server.


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.


    segunda-feira, 20 de agosto de 2012 19:20
  • Boa Noite,

    Honestamente, ao meu ver, a trigger de logon serve para muito pouca coisa (costumo abominá-la em ambientes de produção). Ocorre que ao utilizar uma trigger de logon, o evento de logon só finaliza após a execução da trigger. Como senão bastasse ela retardar o logon, há ainda o perigo dela falhar. Se a trigger de logon falha, o processo de logon não é concluído e aí os usuários não conseguem efetuar o logon na base.

    Se você quer monitorar os logons realizados, opte por alternativas mais econômicas como SQL Trace, Auditoria ou Event Notification. São mecanimos menos invasivos e servem ao seu propósito.

    Sobre a base que será solicitada é uma questão de como a string de conexão foi montada. Se a aplicação não informar o banco desejado, será utilizado o banco Default, mas se a aplicação informar a base, será registrada a base desejada. Agora se ele conectar-se no master e usar um comando do tipo "Use Banco", então não estaremos mais no processo de logon e essa informação não é registrada.

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos:http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível


    segunda-feira, 20 de agosto de 2012 22:35
  • André,

    Eu particularmente evito uitlizar ao máximo qualquer tipo de mecanismo que possa impactar nos processos de comunicaçãi entre a aplicação e o banco. Dizer que nunca utilizei um Trigger de Logon seria mentira, mas somente em casos muito específicos.

    Em alguns cenários cheguei a criar na própria aplicação um log para registrar as informações manipuladas pelos meus usuários.

    Recentemente utilizei no SQL Server 2008 o objeto Audit e foi supreendente o conjunto de recursos e informações que ele oferece.

    O que realmente você esta querendo registrar?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    quarta-feira, 22 de agosto de 2012 15:55
    Moderador
  • Gustavo, bom dia.

    Cheguei a este tópico pesquisando especificamente trigger de logon.

    Estamos mudando nosso servidor para SQL 2016 e pretendemos optar por Windows Authentication.

    O que você me sugere para evitar por ex que usuários tentem/instalem ferramentas de conexão com o banco de dados, e a partir deste login do windows tenham acesso ao banco de dados.

    A intenção é que o acesso seja mesmo apenas pelos sistemas desktop/web, e a equipe de desenvolvimento através do Management Studio.

    Estava pensando exatamente na trigger de logon, mas após seu comentário não sei o que fazer.

    quinta-feira, 5 de outubro de 2017 12:12
  • Danilo,

    Minha recomendação é que você utilize certificados para conexão.


    Pedro Antonio Galvao Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 11 de outubro de 2017 22:38
    Moderador