SQL Server Profiler显示已启动但未完成的rpc



我正在用Profiler排除一些性能问题,并正在使用RPC:Completed查看RPC的持续时间。然而,我也希望看到任何开始但从未完成的rpc。是否存在我可以捕获的超时事件。谢谢。

如果你在SQL Server 2012或更高版本上工作,捕获超时的最佳方法是使用扩展事件。有几种方法可以捕捉到这一点。首先,有一个事件叫做"注意力"。这将显示与客户端的断开连接,无论是通过超时还是取消事务或其他方式。您还可以看到结果为0的批处理完成和rpc完成事件。最后,您可以使用对匹配技术来查看没有完成相应rpc的rpc/batch启动。你可以在我以前的一篇博客上读到这篇文章。

除非我在2008年或更少的时间监测,否则我会采用这些技术中的一种。然后,您可以使用Profiler来执行此操作,但难度更大。您必须捕获rpc/batch启动和完成事件,然后将数据加载到表中并查询缺失的对。

要查看任何启动但从未完成的rpc,您可以使用不同于0的状态跟踪rpc completed事件。0表示成功,任何其他值(1或2)表示某种形式的失败。超时状态为2。

下面是sql trace

使用的过滤器
-- errors only

EXEC sp_trace_setfilter @TraceID, 31,1,0;

执行sp_trace_setfilter @TraceID, 31,0,1, NULL;这里是一个存储过程的链接,它只捕获失败,但在您的情况下,您应该再次捕获rpc +批处理完成的事件并应用该过滤器。在这里输入链接描述

最新更新