在 SQL Server 扩展事件中,是否有任何方法可以将“开始”事件(例如 )rpc_starting
与“完成”事件(例如 )链接起来rpc_completed
?例如,是否有类似相关 ID 的东西可以唯一标识对 SQL Server 的调用?
我想查询记录的事件,以获取通话的开始时间(来自 )rpc_starting
及其持续时间(来自 )rpc_completed
。到目前为止,我还没有找到任何方法来唯一链接同一调用的开始和结束。
我认为该request_id
操作可能会起作用,但对于我查看过的事件,它似乎显示为 0。
因果跟踪可以为您做到这一点,下面是一个示例:
创建事件后,我运行一个简单的 TSQL 作为示例:
然后,在扩展事件视图的 GUI 中,您可以添加“Attach_Activity_Id.GUID”,这样您就可以将您的语句相互链接。看起来像这样:
您可以通过从时间戳中减去持续时间来获得开始时间,这样您就不需要收集事件
rpc_starting
。除此之外,请参阅 Yannick 使用 TRACK_CAUSALITY=ON 的建议。