2008-12-10 96 views
2

DBA有什麼方法可以查看SQL Server 2000中長時間運行的查詢的執行計劃嗎?我知道如何使用fn_get_sql()來運行SQL。理論上,如果打開一個新連接並將環境標誌設置爲相同,它應該爲SQL生成相同的計劃。但是,我處於數據倉庫環境中,此查詢運行了12個小時,數據負載介於兩者之間,因此不能保證新計劃與舊計劃匹配。我只想知道服務器在做什麼。SQL Server 2000中當前正在運行的SQL語句的執行計劃

不,我當然不會殺死當前正在運行的語句,除非我能夠看到該計劃並確定我可以更好地使用索引和聯接提示。

更新: 我感覺如此接近,但我仍然認爲它可以完成。它絕對可以在2K5及更高版本中完成。如果查看syscacheobjects虛擬表,則每個緩存計劃都有對象標識。你可以在這些ID上調用sp_OA *方法,但不知道對象模型(這是專有的),我無法獲得任何地方。

回答

1

不,你不能。你可以做的最好的事情是在查詢過程中運行DBCC INPUTBUFFER並查看最後執行的語句是什麼。然後你可以在查詢分析器中運行它並獲得執行計劃。

0

也許...

運行分析器,並展開「性能」事件節點。 選擇一個SHOWPLAN選項。

希望您能夠陷入執行結束。 我知道你可以記錄查詢計劃,但我不知道它是否適用於這種情況。

我沒有SQL 2k分析器,只有2k5,測試的東西或看到的選項。