Eu tenho um requisito em que preciso auditar (e potencialmente ser notificado) sempre que a conta de usuário 'sa' fizer login em uma instância do SQL Server 2005. Além disso, há uma preferência que o banco de dados que o login acessa também seja auditado.
Entendo que poderia usar eventos estendidos ou auditoria de servidor em uma versão mais recente do SQL Server, mas como estou limitado ao SQL Server 2005, a única opção que consigo pensar é:
- configurar um rastreamento do lado do servidor para eventos de logon do usuário para o usuário 'sa' em uma tabela
- configurar um trabalho para enviar por e-mail o conteúdo da tabela em um intervalo especificado
Existem maneiras mais eficientes de fazer isso em 2005?
Eu diria que considere os gatilhos de logon para fazer isso. Dessa forma, você não está usando um rastreamento do lado do servidor. Você também pode auditar todos os logins bem-sucedidos no log de erros do SQL Server (clique com o botão direito do mouse em instância, propriedades, segurança e escolha logons bem-sucedidos e com falha. No entanto, não acredito que isso mostre as informações de contexto do banco de dados)
Além disso, eu consideraria seriamente a atualização para uma versão posterior do SQL, se possível. SQL 2005 é duas (três se você contar 2008 R2) versões anteriores. Eu sei que você provavelmente sabe disso, mas eu me sentiria mal se não falasse :-)
Eu também desencorajaria o uso de SA para qualquer logon. SA é uma conta altamente privilegiada. É a conta altamente privilegiada no SQL Server. Todo mundo sabe que existe uma conta chamada SA e ela pode estar sujeita a tentativas de invasão. Costumo pressionar apenas pela autenticação do Windows e garantir que um grupo seja adicionado ao qual a equipe de DBAs adequada possa ser adicionada de maneira adequada e segura. Costumo desativar a conta SA no modo misto e criarei outra conta com direitos SA, mas um nome não descritivo. Se, por algum motivo, a conta SA precisar ficar por perto, tento dar a ela uma senha horrível e armazená-la em algum lugar realmente seguro e não usá-la.
Por não ter uma conta SA usada por tantas pessoas que precise auditar seu uso, você pode conceder permissões mais granulares para realizar as atividades necessárias no SQL e nada mais. Menos privilégios e listas de acesso restritas o levarão muito mais longe do que observar a atividade da conta SA.
De qualquer forma, os gatilhos de logon podem ser a melhor aposta. O rastreamento funcionaria, mas há um custo associado a isso (também existe com gatilhos de logon, mas meu palpite é que o custo do rastreamento será mais caro para você)