适用于zabbix6.2 模版MSSQL by ODBC 里创建数据库监控项的语句。
语句来源sp_lock存储过程中,简单的改了一下。
语句一、查询死锁最多的死锁ID
select top 1 req_spid,count(req_spid) as Maxnum
from master.dbo.syslockinfo,
master.dbo.spt_values v,
master.dbo.spt_values x,
master.dbo.spt_values u
where master.dbo.syslockinfo.rsc_type = v.number
and v.type = 'LR'
and master.dbo.syslockinfo.req_status = x.number
and x.type = 'LS'
and master.dbo.syslockinfo.req_mode + 1 = u.number
and u.type = 'L'
group by master.dbo.syslockinfo.req_spid
order by Maxnum desc
注: 在zabbix监控项“键值”为(db.odbc.get[sp_lock-maxPID,"{$MSSQL.DSN}"])得到值为“文本”“[{"req_spid":"146","Maxnum":"86"}]” 这个监控项最好设置为数据库监控,可以再次使用相关项将spid提取出来,创建最大死锁数进程spid监控项
语句二、- 每秒死锁数量
select count(req_spid)
from master.dbo.syslockinfo,
master.dbo.spt_values v,
master.dbo.spt_values x,
master.dbo.spt_values u
where master.dbo.syslockinfo.rsc_type = v.number
and v.type = 'LR'
and master.dbo.syslockinfo.req_status = x.number
and x.type = 'LS'
and master.dbo.syslockinfo.req_mode + 1 = u.number
and u.type = 'L'
注:在zabbix监控项“键值”为(db.odbc.select[sp_lock,"{$MSSQL.DSN}"])得到值为“整数”,可直接作为监控项使用。