如何在SQL存储过程中实现日志记录和错误报告?

背景

我目前正在开发一个大量使用SQL存储过程的项目.有些表每天有多达几十万个程序执行.因为项目为我们的客户端日志记录提供关键业务功能,所以快速错误检测至关重要

如何在SQL存储过程中实现快速可靠的日志记录和错误报告?

最佳答案
目前这对您没有帮助,但可能对SQL Server 2008上的人员感兴趣.在SQL Server 2008上,XEvents可用于将所有错误详细信息(包括语句文本)记录到中心位置.

IF EXISTS(SELECT * FROM sys.server_event_sessions WHERE name='ErrorLogger')
    DROP EVENT SESSION [ErrorLogger] ON SERVER;
CREATE EVENT SESSION [ErrorLogger]
ON SERVER
ADD EVENT sqlserver.error_reported(
     ACTION (sqlserver.sql_text)
     WHERE (([severity]>(10))))
ADD TARGET package0.asynchronous_file_target(
     SET filename='c:\temp\error_logger.xel', metadatafile='c:\temp\error_logger.xem')
WITH (MAX_MEMORY = 4096KB, EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS, 
MAX_DISPATCH_LATENCY = 30 SECONDS, MAX_EVENT_SIZE = 0KB, 
MEMORY_PARTITION_MODE = NONE, TRACK_CAUSALITY = OFF, STARTUP_STATE = ON)

ALTER EVENT SESSION [ErrorLogger] ON SERVER STATE = START

并审查错误

SELECT CONVERT (XML, event_data) AS data
        FROM sys.fn_xe_file_target_read_file ('C:\Temp\error_logger*.xel', 'C:\Temp\error_logger*.xem', NULL, NULL)

转载注明原文:如何在SQL存储过程中实现日志记录和错误报告? - 代码日志