nkdbajoe Asked: 2018-05-11 08:41:39 +0800 CST2018-05-11 08:41:39 +0800 CST 2018-05-11 08:41:39 +0800 CST 扩展事件xml的解释 772 我查询了一个扩展事件会话并返回了 XML。我对框架级别 1、2、3 的含义感到困惑。以及直线、offsetStart 和 offsetEnd?但是,我能够将 sql 句柄转换为 sp 名称。 级别似乎与它们的调用顺序相反。所以第 3 层中列出的对象调用第 2 层中的对象,后者调用第 1 层中的对象。 sql-server-2012 xml 1 个回答 Voted Best Answer Solomon Rutzky 2018-05-12T08:16:39+08:002018-05-12T08:16:39+08:00 正如“操作”的名称所示,您正在查看单个会话中一系列嵌套调用的执行堆栈。如您所述,一个对象调用另一个对象,另一个对象又调用另一个对象。随着每个后续模块的执行,调用模块被搁置并向下推“堆栈”,当前/活动模块位于顶部(级别 1)。当顶层模块完成时,如果堆栈中有任何调用模块(级别> 1),那么它们都会向上移动一个,并且级别 2 现在处于级别 1 并且再次处于活动状态,从它停止的地方继续它称为子模块。 1 级是您在sys.dm_exec_requests其他 DMV 中看到的。你看不到 1 以上的级别(至少就我所见而言)。 每个级别存在的是查询批处理(一个或多个 T-SQL 语句封装在一个模块中——存储过程、触发器,不确定多语句表值函数和标量 UDF 是否会获得它们自己的级别——或者作为临时/动态 SQL 提交)。(handle即“sql_handle”)属性指的是查询批次(批次中的所有语句)。该line属性应该是批处理中当前执行语句的起始行号。offsetStart和offsetEnd属性应该是批处理中当前执行语句的开始和结束字节位置。因为偏移量表示为字节位置,所以需要除以 2 才能得到字符positions(如果你想做一些类似SUBSTRING批处理的事情来提取那个特定的语句)。我不确定 的值-1是否曾经出现在这里offsetEnd,但它确实出现sys.dm_exec_requests并指示“批次结束”。
正如“操作”的名称所示,您正在查看单个会话中一系列嵌套调用的执行堆栈。如您所述,一个对象调用另一个对象,另一个对象又调用另一个对象。随着每个后续模块的执行,调用模块被搁置并向下推“堆栈”,当前/活动模块位于顶部(级别 1)。当顶层模块完成时,如果堆栈中有任何调用模块(级别> 1),那么它们都会向上移动一个,并且级别 2 现在处于级别 1 并且再次处于活动状态,从它停止的地方继续它称为子模块。
1 级是您在
sys.dm_exec_requests
其他 DMV 中看到的。你看不到 1 以上的级别(至少就我所见而言)。每个级别存在的是查询批处理(一个或多个 T-SQL 语句封装在一个模块中——存储过程、触发器,不确定多语句表值函数和标量 UDF 是否会获得它们自己的级别——或者作为临时/动态 SQL 提交)。(
handle
即“sql_handle”)属性指的是查询批次(批次中的所有语句)。该line
属性应该是批处理中当前执行语句的起始行号。offsetStart
和offsetEnd
属性应该是批处理中当前执行语句的开始和结束字节位置。因为偏移量表示为字节位置,所以需要除以 2 才能得到字符positions(如果你想做一些类似SUBSTRING
批处理的事情来提取那个特定的语句)。我不确定 的值-1
是否曾经出现在这里offsetEnd
,但它确实出现sys.dm_exec_requests
并指示“批次结束”。