SQL Server 2000 中当前运行的 SQL 语句的执行计划

发布于 2024-07-09 17:54:15 字数 420 浏览 5 评论 0原文

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

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

更新: 我感觉很接近,但我仍然认为这是可以做到的。 2K5以后肯定可以做到。 如果您查看 syscacheobjects 虚拟表,就会发现每个缓存计划都有对象 ID。 您可以在这些 id 上调用 sp_OA* 方法,但如果不了解对象模型(这是专有的),我将无处可去。

Is there any way for a DBA to peek in on the execution plan of a long-running query in SQL Server 2000? I know how to get the SQL being run using fn_get_sql(). And yes, theoretically if open a new connection and set the environment flags the same, it should generate the same plan for the SQL. However, I'm in a data warehouse environment and this query has run for 12 hours with a data load in between, so there's no guarantee that the new plan would match the old plan. I just want to know exactly what the server is doing.

And no, I'm certainly not going to kill the currently running statement unless I can see the plan and know for certain that I can do better with index and join hints.

UPDATE:
I feel so close, but I still think it can be done. It can definitely be done in 2K5 and later. If you look at the syscacheobjects virtual table, there are object ids for every cached plan. You can call sp_OA* methods on these ids, but without knowledge of the object model (which is proprietary), I can't get anywhere.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

皓月长歌 2024-07-16 17:54:15

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

No you cannot. The best you can do is run DBCC INPUTBUFFER on query process and see what the last statement being executed was. You can then run this in query analyzer and get an execution plan.

何止钟意 2024-07-16 17:54:15

我认为你不能做这样的事情,它需要使用原始查询提交到服务器:

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

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

I don't think you can do such a thing, it needs to be submitted to the server with the original query:

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

You could load up the query and get the estimated execution plan.

梦开始←不甜 2024-07-16 17:54:15

也许...

运行探查器,并展开“性能”事件节点。
选择显示计划选项之一。

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

我没有 SQL 2k 分析器,只有 2k5,来测试某些内容或查看选项。

Maybe...

Run profiler, and expand the "performance" events node.
Choose one of the SHOWPLAN options.

Hopefully, you will be able to trap the end of execution.
I know you can log query plans, but I don't know if it works in this case.

I don't have SQL 2k profiler, only 2k5, to test something or see the options.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文