SQL查询某内容来自于哪个存储过程或触发器

在做ERP运维的工作中,偶尔会遇到用户使用系统过程中出现一些错误提示,这时什么快速查到报错的源头呢?可以用跟踪器跟踪,找出报错的原因,下面是根据报错内容,查到提示来自于系统里的哪个存储过程或触发器。

---查看某内容来自于某个存储过程

SELECT NAME FROM sysobjects o, syscomments s

WHERE o.id = s.id

AND TEXT LIKE '%报错内容%'

AND o.xtype = 'P'

如果是触发器把o.xtype 改为:TR

 

--查找存在某内容的存储过程名称及存储过程内容

SELECT ROUTINE_NAME, ROUTINE_DEFINITION 

FROM INFORMATION_SCHEMA.ROUTINES 

WHERE ROUTINE_DEFINITION LIKE '%你要查找的内容%' 

AND ROUTINE_TYPE='PROCEDURE'

 

-----------查看某内容来自哪个表里的触发器。

with TR AS (

SELECT name FROM sysobjects o, syscomments s

WHERE o.id = s.id  

AND TEXT LIKE '%报错内容%'

AND o.xtype = 'TR'

),

TR_TABLE AS (select triggers.name as TR_NAME,tables.name as TABLE_NAME,triggers.is_disabled as JY_YN,

triggers.is_instead_of_trigger AS TR_TYPE,

case when triggers.is_instead_of_trigger = 1 then 'INSTEAD OF'

when triggers.is_instead_of_trigger = 0 then 'AFTER'

else null

end as TR_MS

from sys.triggers triggers

inner join sys.tables tables on triggers.parent_id = tables.object_id

where triggers.type ='TR'

--order by triggers.create_date

)

select * from tr a

left join tr_table b on a.name=tr_name

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值