我刚开始尝试使用SQL Server警报。我设置了一个警告错误/秒,阈值为零,认为每次将错误写入日志时我都会收到一封电子邮件。我收到了很多电子邮件!我提高了门槛,当它超过每秒一次时通知我,我仍然不时收到很多电子邮件。
例如,我收到的电子邮件包含以下内容:
DESCRIPTION: The SQL Server performance counter 'Errors/sec' (instance '_Total') of object 'MyServerName:SQL Errors' is now above the threshold of 1.00 (the current value is 4.45).
以下是我正在使用的警报的命令:
EXEC msdb.dbo.sp_add_alert @name=N'SQL Errors',
@message_id=0,
@severity=0,
@enabled=1,
@delay_between_responses=0,
@include_event_description_in=1,
@notification_message=N'Check the ERRORLOG for details.',
@category_name=N'[Uncategorized]',
@performance_condition=N'MyServerName:SQL Errors|Errors/sec|_Total|>|0',
@job_id=N'00000000-0000-0000-0000-000000000000'
当我查看日志时,我没有发现任何错误。我确实找到了信息性消息(备份完成等)。这个警报真的是“条目/秒”而不是真正的“错误/秒”或我是否在错误的地方( SSMS |服务器|管理| SQL Server日志|当前)查找实际错误?
答案 0 :(得分:2)
不会记录所有错误,可能会执行可能会破坏约束的insert
,但会向客户端引发错误,但这并不意味着它会记录在错误日志中。
例如,如果您执行以下t-sql。
RAISERROR ('This is an error!', 16, 1) WITH LOG
错误将记录在错误日志中,省略WITH LOG
只会导致错误而不记录。
错误具有可用于过滤的属性,例如消息ID,严重性,但您可以根据事物的外观进行监控。严重程度可能是您所需要的。
答案 1 :(得分:0)
我已阅读但从未使用过警报。基于此,我认为“SQL警报系统”基于Windows应用程序事件日志中的数据写入,例如。
并查看“应用程序”条目。 (当你在那里时,看看其余的人,看看你从未知道的所有那些错误和错误。这很像在树林里的岩石下看......)