使用Server 2008 R2:
如何写入Server错误日志?我有一个ROLLBACK语句,我想将它与写入错误日志的语句结合起来,以便进行外部监视。
示例:
BEGIN TRAN
INSERT INTO table1
SELECT *
FROM table2
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
--Write to log
RETURN
END
COMMIT TRAN编辑:
我想澄清一下-我想写到对象资源管理器中的“管理”文件夹下的“Server日志”、“当前”日志中。
发布于 2012-07-05 19:20:19
AFAIK,唯一的方法是使用WITH LOG函数的RAISERROR选项。请从MSDN页面中注意,要做到这一点,必须满足某些安全要求。
也就是说,Server错误日志实际上并不适用于基于应用程序的日志记录。如果您需要将监视/日志记录添加到您的应用程序中,这可能应该作为数据库中的一个表来实现(例如)。
发布于 2012-07-05 19:20:33
您需要在日志中使用RAISERROR
BEGIN TRY
-- Error here
SELECT 1/0
END TRY
BEGIN CATCH
RAISERROR('Ouch... divie by zero', 16,1) WITH LOG
END CATCH发布于 2012-07-05 19:43:28
虽然RAISERROR ... WITH LOG是可能的,但别忘了
只有sysadmin固定服务器角色的成员或具有ALTER权限的用户可以使用日志指定。
在生产中,您必须将WITH日志生成代码包装在存储过程适当签署中。
根据您想要实现的目标,有更好的监视选项。例如,可以使用sp_trace_generateevent跟踪用户消息。
https://dba.stackexchange.com/questions/20455
复制相似问题