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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章