【问题标题】: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 上执行删除查询的东西)。

知道如何实现吗?

【问题讨论】:

  • 您可以为此使用扩展事件。

标签: sql-server sql-server-2008


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 2016-01-10
    • 1970-01-01
    • 2012-07-28
    • 1970-01-01
    相关资源
    最近更新 更多