0

我刚刚开始尝试使用 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'

当我查看日志时,我没有发现任何错误。不过,我确实找到了信息性消息(备份​​完成等)。这个警报真的是“Entries/sec”而不是真正的“Errors/sec”,还是我在错误的地方(SSMS | Server | Management | SQL Server Logs | Current)寻找实际错误?

4

2 回答 2

2

不会记录所有错误,insert可能会执行可能会破坏约束的错误,将向客户端提出错误,但这并不意味着它已记录在错误日志中。

例如,如果您执行以下 t-sql。

RAISERROR ('This is an error!', 16, 1) WITH LOG

错误将被记录在错误日志中,省略WITH LOG只会导致在不记录的情况下引发错误。

错误具有可用于过滤的属性,例如消息 ID、严重性,但您可以通过事物的外观进行监控。严重性可能是您需要的。

于 2011-03-31T15:36:59.823 回答
0

我读过但从未使用过警报。基于此,我相信“SQL 警报系统”基于 Windows 应用程序事件日志中的数据写入,例如

  • 开始
  • 程式
  • 管理工具
  • 事件查看器

并在“应用程序”条目下查看。(当你在那里的时候看看其余的,看看所有你不知道的错误和错误。这很像在树林里的一块岩石下看......)

于 2011-03-31T15:35:59.693 回答