1

我一直在研究在完整的端到端跟踪场景中使用扩展事件。我对 XEvent 的活动 ID 特别感兴趣,它有助于跟踪给定活动的事件执行顺序。

您可能已经猜到了,我在 SQL Server 2008 中的事件会话设置了以下选项:

TRACK_CAUSALITY = 开

我的问题是,当从 C# 代码(Linq、实体框架等)执行 SQL 查询时,是否可以推断出将由 SQL Server 中的扩展事件跟踪的活动 ID?

例如,我希望能够将执行线程的 CorrelationManager.ActivityId guid 传播到 SQL Server 以进行 XEvent 跟踪。

非常感谢

4

1 回答 1

2

扩展事件当前不跟踪 SQL Server 之外的任何内容的 activity_id。TRACK_CAUSALITY 仅用于跟踪 SQL Server 中的哪个事件导致 SQL Server 中的另一个事件,例如 sql_statement_starting 事件将具有特定的 activity_id 和 seq 编号 1,然后后续 file_read 事件将具有相同的 activity_id 和 seq 2,a PAGEIOLATCH_SH 的wait_info 事件将具有相同的activity_id 和3 的seq,依此类推,直到您到达带有activity_id 的最终seq 编号的sql_statement_completed。你可以在我关于扩展事件的博客文章中找到很多例子:

http://sqlskills.com/blogs/jonathan/category/Extended-Events.aspx

如果您将数据转储到 ETW 目标中,则可以将其与应用程序的 ETW 跟踪合并,并根据发生率绘制事件的松散相关性,但两者之间可能存在因果关系跟踪。

于 2011-09-28T15:21:46.030 回答