Eu tenho menos de um punhado de usuários que têm associação de função sysadmin. Eu gostaria de ser notificado (por e-mail) quando um deles fizer login. A criação de um gatilho é a melhor maneira ou existe algum tipo de função interna no SQL Server ou talvez um SQL Server Agent-Alert que possa ser usado?
Eu poderia construir um trabalho olhando para:
SELECT name
FROM master.sys.server_principals
WHERE IS_SRVROLEMEMBER ('sysadmin',name) = 1 and name not like '%NT%'
ou algo dessa natureza, mas isso significaria que o trabalho teria que ser executado a cada segundo...
Se você deseja ser NOTIFICADO INSTANTÂNEA E CONSISTENTE quando uma pessoa com uma permissão específica fizer login, os gatilhos são a melhor rota.
Se você deseja uma auditoria de logons bem-sucedidos ou com falha, o SQL Audit é sua melhor rota.
Você pode ver uma pergunta semelhante aqui por Sergey no Stack Exchange .
Existem outros métodos para atingir esse objetivo, mas depende estritamente dos requisitos.
Você pode consultar sessões ativas e ingressar em tabelas do sistema para encontrar usuários ativos, você pode auditar quem fez login com êxito ou não com os eventos de auditoria e, em seguida, correlacionar com as tabelas do sistema também. (Isso se torna uma visão retroativa ou histórica, não em tempo real.) Você também pode usar rastreamento/eventos estendidos para obter essas informações e agendar um trabalho para ser executado. Aqui está um exemplo da captura de logon de eventos estendidos por Steve Jones na voz do DBA.
Se você precisar dele instantaneamente quando a pessoa fizer login e de forma consistente, os gatilhos são sua melhor resolução.
MSDN em gatilhos de logon.
Aqui está um exemplo de criação de um gatilho LOGON para todos os Sysadmin.
Você pode querer criar uma maneira de evitar acertar o gatilho, veja esta resposta se quiser incorporá-la.
Nota: Tenha cuidado com os gatilhos de logon, você não quer se trancar.