Sql-Server-2008-R2

大量執行計劃掛起 SSMS

  • May 7, 2020

我有一個需要大約 3-5 秒的儲存過程,我試圖理解它,所以我想要一個執行計劃。當我在啟用執行計劃的 SQL Server Management Studio 中執行它時,它需要 15 分鐘,然後,我得到一個顯示“執行計劃”的選項卡,但該選項卡是空的。任何進一步嘗試執行任何 SQL(甚至select * from foo)都不再有效。我有一個損壞的 SQL Server Management Studio 應用程序,我必須將其關閉並重試。我已經完成了 3 次,浪費了 45 分鐘,現在我準備了解一些替代方案。

首先,是否有一種可靠的命令行方式來SQLPLAN為特定的 sql 腳本生成文件,可能是從命令行,然後我可以使用 SSMS 以外的其他工具進行調查以生成我的計劃。

其次,如果沒有內置可靠的命令行方式來生成 SQL 執行計劃並將其儲存為文本或 XML,那麼我想知道是否存在其他一些可以做得很好的第三方工具在非常大的 SQLPlans 上,特別是當它的 GUI 繪圖部分不堪重負時不會窒息和死亡。

當 SSMS 無法生成並向您顯示執行計劃時,您會怎麼做?我正在使用 SQL 2008 R2 Standard 及其包含的 SSMS 版本,並且我沒有任何額外的外掛。

更新我正在呼叫一個儲存過程,該過程創建一個游標,該游標執行子查詢,並在一個循環中做大惡,生成超過 10K 的單個子查詢語句。看起來我真的需要重構它以減少輸出風暴。

Update2它看起來真的像伺服器端跟踪(在問題區域歸零),然後返回分析,然後可能需要返回查詢計劃。我在一張大圖上放大得太深了,我需要把它縮小一點。

SET STATISTICS XML ON在執行查詢之前嘗試。這將以 XML 格式返回計劃,而不會嘗試在 SSMS 中呈現它。然後,您可以將文本複制並粘貼到文件中。從那裡,您將獲得 XML 格式的計劃,您可以在SQL Sentry Plan Explorer之類的工具中打開它。

你看過SentryOne Plan Explorer嗎?它可以處理令 Management Studio 窒息的龐大計劃。您還可以從該工具中生成實際計劃和估計計劃,因此您甚至不必為 SSMS 操心。

引用自:https://dba.stackexchange.com/questions/28730