假设我有一个这样的存储过程(假设表模式很好):
CREATE PROCEDURE p_MyProc
AS
INSERT MyTable SELECT Col1 FROM Table1
INSERT MyTable SELECT Col2 FROM Table2
INSERT MyTable SELECT Col3 FROM Table3
假设这些最终是大插入,每个可能需要几分钟,是否可以确定当前在存储过程的上下文中运行哪个?
我知道如何找到正在运行的存储过程,我只是想看看是否有一种方法可以获得更精细的信息,而无需在其中添加 PRINT 或其他跟踪语句。有没有办法让语句显示在跟踪中?
您可以跟随SQL Server 跟踪或扩展事件。
您可以查看已完成的语句和/或批次,这应该可以为您提供所需的粒度。
SP:StmtCompleted 事件类
正如您在下面的脚本中看到的那样,我通过 DMV 完成了这项工作:
(它是更详细脚本的一部分,但我只是在这个问题中提取了与您相关的部分)
您可以在下面的示例中看到,它正在执行
insert
存储过程内部。