sql-server – Microsoft SQL Server Management Studio – 具有锁定附加信息的警报

前端之家收集整理的这篇文章主要介绍了sql-server – Microsoft SQL Server Management Studio – 具有锁定附加信息的警报前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当锁等待超过60秒时,我们想要发出警报.以下警报脚本按预期执行.

但是我们希望有更多的信息,例如锁定的会话ID,锁定状态,登录名等.

有没有办法把这个包含在@notification_message中?

USE [msdb]
GO
EXEC msdb.dbo.sp_update_alert @name=N'Total Lock Wait Time (ms) > 60000',@message_id=0,@severity=0,@enabled=1,@delay_between_responses=0,@include_event_description_in=1,@database_name=N'',@notification_message=N'',@event_description_keyword=N'',@performance_condition=N'MSsql$DB:Locks|Lock Wait Time (ms)|_Total|>|60000',@wmi_namespace=N'',@wmi_query=N'',@job_id=N'00000000-0000-0000-0000-000000000000'
GO

EXEC msdb.dbo.sp_update_notification 
          @alert_name = N'Total Lock Wait Time (ms) > 60000',@operator_name = N'me',@notification_method = 1
GO

解决方法

msdb.dbo.sp_update_alert系统存储过程更新msdb.dbo.sysalerts表中的记录. nvarchar(512)参数“@notification_message”存储在msdb.dbo.sysalerts.notification_message列中.触发警报时,将拉出该列的内容.我以前没有尝试过,但您可以尝试的一件事是创建一个sql代理作业,修改msdb.dbo.sysalerts.notification_message中的值,并使用@job_id或@job_name参数将该作业附加到通知中.如果幸运的话,该工作将在通知发出之前执行,因此“动态”更改通知的文本.我期望的是更有可能的是,该作业将同时运行,只会在下次触发此警报时产生影响.但是,取决于你正在寻找什么,这可能是足够好的.

有关更多信息,请访问您的MSDB数据库并运行sp_helptext sp_update_alert,您可以看到它在做什么.

另一个选项是使您的sql代理作业使用sp_send_dbmail发送消息.然后,您可以自定义您想要的消息.

猜你在找的MsSQL相关文章