我正在调整 Dynamics AX 应用程序的性能,并在 SQL 跟踪中看到表单的长时间运行的高 I/O 查询exec sp_cursorexecute 1073742882 ...
当我尝试在新的 SQL Management Studio 窗口中运行该查询时,我收到一个错误Could not find prepared statement with handle 1073742882.
我'我不确定,但似乎缓存计划是特定于连接的。我的踪迹里没有sp_cursorprepare
;重复用例会显示带有新光标的相同准备好的句柄 ID。由于它是我要连接的共享环境,我想我必须重置应用服务器并跟踪它的启动才能看到它。
- 有没有办法使用游标准备好的句柄 ID 来查看底层查询?
- 有没有办法将一行
dm_exec_cached_plans
与这个游标关联起来? - 有没有办法通过
dm_exec_query_plan
或其他方式查看执行计划?
自 SQL2000 即 DMV 之前的日子以来,我不必跟踪游标活动。我认为旧方法仍然可行,使用分析器并在跟踪中包含执行计划。
我不记得该计划是否将包含在 sp_cursorexecute 调用中,或者您是否需要返回跟踪并找到与句柄关联的 sp_cursorprepexec 或 sp_cursorprepare 事件。