我想创建一个警报,就像 Brent Ozar 的How to Configure SQL Server Agent Alerts中的警报一样,但是我找不到与我想在 sys.messages 上监视的错误相关的消息,正如sp_add_alert文档所说的那样,我想要的问题监控没有产生任何记录的错误。如果我只使用sp_addmessage,我相信我仍然缺少触发错误的验证。如果我创建一个作业来进行验证,我不需要警报,因为该作业可以自己发送电子邮件。
创建新警报的正确方法是什么?
背景
最近,我环境中的应用程序开始无法在 SQL Server 上连接,我们花了一些时间才注意到问题是由于实例达到了实例的 32k 限制(SQL Server 最多允许 32,767 个用户连接)。连接吞噬者是一个配置错误的应用程序,开发人员现在已经纠正了它,但我不想再次感到惊讶,因为其他一些应用程序导致了同样的情况,因此需要警报。当连接数达到 10K 之类的限制时发出警报会很好,但如果达到 32K 限制就发出警报会有所帮助。
按照AMtwo和Tibor Karaszi的指示,我决定创建一个 Agent 作业来验证是否超过了阈值,如果是,将报告消耗最多连接的前 10 个应用程序。我可以得到我需要的信息:
为了生成内容更丰富、格式更佳的电子邮件,我从 AMtwo 的SQL Server Blocking 警报中借鉴了一些想法(不是说大部分代码),结果如下:
此代码已添加到每隔一段时间运行的作业中,并在需要时以格式化的电子邮件发送警报。它成功了。
引用内容:
dbo.EmailCSS_Get()
dbo.EmailServerInfo_Get()
你没有错过任何东西。代理事件警报需要事件日志中的 sql server 实例出错。代理每 20 秒轮询一次事件日志。非常简单直接。
因此,如果您需要自己产生该错误(如在本例中),您不妨从该代码发送电子邮件,而不是绕过事件警报。