Usando o SQL Server 2008 R2:
Como posso gravar no log de erros do SQL Server? Eu tenho uma instrução ROLLBACK que gostaria de associar a uma instrução gravada no log de erros para monitoramento externo.
Exemplo:
BEGIN TRAN
INSERT INTO table1
SELECT *
FROM table2
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
--Write to log
RETURN
END
COMMIT TRAN
EDITAR:
Gostaria de esclarecer - quero gravar no log "Logs do SQL Server", log "Atual", na pasta "Gerenciamento" no explorador de objetos.
AFAIK, a única forma de fazer isso é usando a
WITH LOG
opção daRAISERROR
função. Observe nessa página do MSDN que há certos requisitos de segurança que devem ser atendidos para que você faça isso.Dito isso, o log de erros do SQL Server realmente não se destina ao log baseado em aplicativo. Se você precisar adicionar monitoramento/log ao seu aplicativo, isso provavelmente deve ser implementado como uma tabela em seu banco de dados (por exemplo).
Enquanto
RAISERROR ... WITH LOG
for possível, não se esqueça queNa produção, você teria que agrupar o código de geração de log WITH em um procedimento armazenado devidamente assinado .
Dependendo do que você está tentando alcançar, existem opções muito melhores para monitoramento. por exemplo, você pode rastrear uma mensagem de usuário usando
sp_trace_generateevent
.você precisa usar RAISERROR com LOG