按受影响的表筛选扩展事件?

时间:2011-09-06 19:44:18

标签: sql-server-2008 extended-events

我正在使用SQL Server 2008中的扩展事件来执行某些监视。我最感兴趣的是以下事件:

  • sqlserver.sp_statement_completed
  • sqlserver.sp_statement_starting
  • sqlserver.sql_statement_completed
  • sqlserver.sql_statement_starting

我想知道是否可以根据它们影响的表过滤掉这些扩展事件。我没有看到任何可以帮助我执行此类过滤的谓词。由于单个存储过程实际上可能会影响多个表,我甚至不确定它们是如何做到的,但有人可能会想到一些巧妙的技巧。

提前致谢!

1 个答案:

答案 0 :(得分:2)

不,SQL Server 2008中没有任何内容允许您尝试将此作为会话定义的一部分,但如果您使用track_causality = on并添加,则可以将其作为事件后处理的一部分来执行在sqlserver.lock_aquired事件中,仅在对象级别锁定架构稳定性,然后对要定位的对象的object_id进行过滤。然后你必须根据activity_xref_id进行过滤,你可以抛弃那些没有关联的sqlserver.lock_acquired事件的activity_xref_ids的起始/补充事件。这可行,但它很复杂,并且还会捕获大量额外的噪声数据。

想想看,你也可以使用sqlserver.lock_acquired事件和sqlserver.sql_text以及sqlserver.tsql_stack动作,以便能够以更少的噪音做同样的事情。
您希望能够与访问特定对象相关联的起始/已完成事件返回的特定数据元素,或者您只是想知道访问数据库中特定对象的SP和特殊SQL?

让我知道一些更具体的细节,我会看看我是否可以制作一个能够为您展示的演示。