查找触发触发器的查询[重复]

Posted

技术标签:

【中文标题】查找触发触发器的查询[重复]【英文标题】:Find query that fired a trigger [duplicate] 【发布时间】:2013-01-22 10:24:38 【问题描述】:

可能重复:Create Trigger to log SQL that affected table?

是否可以在 SQL Server 2008 中编写一个触发器,将触发它的查询放入我的日志表中?我将在示例中进行解释:

我有一个表 TAB1 和日志表 LOG。我执行从 TAB1 中删除行的查询,并且我希望在我的 LOG 表中包含该查询(或其他可以帮助我识别谁在 TAB1 上执行删除查询的东西)。

知道如何实现吗?

【问题讨论】:

您可以为此使用扩展事件。 【参考方案1】:

我想到的唯一方法是通过 CONTEXT_INFO 显式传递过程名称 这进入程序

declare @bin varbinary(128) = (cast(object_name(@@Procid) as varbinary(128))
set context_info @bin

并在触发器中使用它

declare @procName as nvarchar(max)
set @procName = cast(context_info() as nvarchar(max))

我不知道有什么其他方法可以做到这一点

编辑: 我想你可能会感兴趣clickie

【讨论】:

以上是关于查找触发触发器的查询[重复]的主要内容,如果未能解决你的问题,请参考以下文章

仅当存在时才触发 DROP (ORACLE) [重复]

同时触发javascript和sql查询[重复]

mysql 日志记录触发器,查找更改的列

SQL中如何查询指定触发器是不是存在

将触发器表与其他表连接后重复数据

视图 触发器 存储过程 函数 流程过程 索引 慢查询