2

DBA 有什么方法可以查看 SQL Server 2000 中长时间运行的查询的执行计划?我知道如何使用 fn_get_sql() 运行 SQL。是的,理论上如果打开一个新连接并设置相同的环境标志,它应该为 SQL 生成相同的计划。但是,我在数据仓库环境中,这个查询已经运行了 12 个小时,中间有数据加载,所以不能保证新计划会匹配旧计划。我只想确切地知道服务器在做什么。

不,我当然不会终止当前正在运行的语句,除非我能看到计划并确定我可以使用索引和连接提示做得更好。

更新:我感觉如此接近,但我仍然认为可以做到。它绝对可以在 2K5 及更高版本中完成。如果查看 syscacheobjects 虚拟表,每个缓存计划都有对象 ID。您可以在这些 id 上调用 sp_OA* 方法,但是如果不了解对象模型(这是专有的),我将无处可去。

4

3 回答 3

1

你不能。您可以做的最好的事情是在查询过程中运行DBCC INPUTBUFFER并查看最后执行的语句是什么。然后,您可以在查询分析器中运行它并获取执行计划。

于 2008-12-10T21:22:08.337 回答
0

我不认为你可以做这样的事情,它需要与原始查询一起提交给服务器:

http://msdn.microsoft.com/en-us/library/aa178303(SQL.80).aspx

您可以加载查询并获得估计的执行计划。

于 2008-12-10T17:58:16.923 回答
0

也许...

运行分析器,并展开“性能”事件节点。选择 SHOWPLAN 选项之一。

希望您能够捕获执行结束。我知道您可以记录查询计划,但我不知道它在这种情况下是否有效。

我没有 SQL 2k 探查器,只有 2k5 来测试某些东西或查看选项。

于 2008-12-11T17:53:17.463 回答