我正在尝试查询服务器级触发器的定义文本。更具体地说,尝试从用户定义的存储过程中查询定义。因为触发器保存在服务器级别,所以正常方式似乎不起作用。
我尝试了什么:
1)
sp_helptext
:范围错误,我收到消息:
消息15009,级别16,状态1,过程sp_helptext,第54行 对象'myTrigger'在数据库'master'中不存在或对此操作无效。
2)SELECT OBJECT_DEFINITION (OBJECT_ID(N'myTrigger)) AS ObjectDefinition;
:
返回NULL
。我用sys.server_triggers
中的对象id替换了“myTrigger”。这也会返回NULL
。
3)
SELECT
name,
s.Definition
FROM
sys.server_triggers t
INNER JOIN sys.sql_modules s
ON t.object_id = s.object_id
WHERE name = 'myTrigger'
sys.sql_modules
答案 0 :(得分:1)
试试这个
SELECT ssmod.definition AS [Definition]
FROM master.sys.server_triggers AS tr
LEFT OUTER JOIN master.sys.server_assembly_modules AS mod ON mod.object_id = tr.object_id
LEFT OUTER JOIN sys.server_sql_modules AS ssmod ON ssmod.object_id = tr.object_id
WHERE (tr.parent_class = 100) and (tr.name = 'MyTriggerName')