查看 SQL 2008 sp_cursorexecute 底层查询和执行计划

Tra*_*s P 5 sql-server-2008 execution-plan cursors

我性能调优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或其他方式查看执行计划?

Mar*_*ith 2

自 SQL2000(即 DMV 之前的日子)以来,我就不必跟踪游标活动。我认为旧的方法仍然可行,使用探查器并在跟踪中包含执行计划。

我不记得该计划是否将包含在 sp_cursorexecute 调用中,或者您是否需要返回跟踪并找到与句柄关联的 sp_cursorprepexec 或 sp_cursorprepare 事件。