Rog*_*ier 15 sql-server sql-server-2008-r2 locks
我们希望在锁定等待时间超过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
Run Code Online (Sandbox Code Playgroud)
系统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
。然后您可以根据需要自定义消息。
归档时间: |
|
查看次数: |
421 次 |
最近记录: |