DBA 有什么方法可以查看 SQL Server 2000 中长时间运行的查询的执行计划?我知道如何使用 fn_get_sql() 运行 SQL。是的,理论上如果打开一个新连接并设置相同的环境标志,它应该为 SQL 生成相同的计划。但是,我在数据仓库环境中,这个查询已经运行了 12 个小时,中间有数据加载,所以不能保证新计划会匹配旧计划。我只想确切地知道服务器在做什么。
不,我当然不会终止当前正在运行的语句,除非我能看到计划并确定我可以使用索引和连接提示做得更好。
更新:我感觉如此接近,但我仍然认为可以做到。它绝对可以在 2K5 及更高版本中完成。如果查看 syscacheobjects 虚拟表,每个缓存计划都有对象 ID。您可以在这些 id 上调用 sp_OA* 方法,但是如果不了解对象模型(这是专有的),我将无处可去。