徵狀
請試想下列案例:
-
您有一個儲存程式,其中包含 Microsoft SQL Server 2012 中的子預存程序。
-
子預存程序使用資料表做為參數。
-
您會建立一個臨時資料表,然後將它作為參數傳遞給子預存程序。
-
子存儲程式會使用游標針對臨時資料表執行一些查詢。
在這種情況下,會降低 SQL Server 2012 效能的記憶體洩漏。
解決方案
累積更新資訊
SQL Server 2012 的累積更新 3 Service Pack 1 (SP1)
此問題的修正程式是在累積更新3中第一次發行。如需如何針對 SQL Server 2012 SP 1 取得累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
2812412 SQL Server 2012 的累積更新套件 3 Service Pack 1注意: 因為組建是累加的,所以每個新的修正版本都包含舊版 SQL Server 2012 SP 1 修正版本中所包含的所有修復程式及所有安全性修正程式。 我們建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2772858 在發行 SQL Server 2012 Service Pack 1 之後發行的 SQL Server 2012 組建
狀態
Microsoft 已確認<適用於>一節中所列的 Microsoft 產品確實有上述問題。
其他相關資訊
下表提供的產品或工具的詳細資訊,這些資訊會自動檢查您的 SQL Server 實例和評估規則之 SQL Server 版本所述的 [現象] 區段中所述的條件:
規則軟體 |
規則標題 |
規則描述 |
評估規則所依據的產品版本 |
---|---|---|---|
System Center Advisor |
Sql server 在 SQL Server 2012 中針對嵌套的預存程序中的臨時資料表執行查詢時,出現 SQL Server 記憶體洩漏 |
在這個 SQL Server 實例 advisor 中,偵測到 SQL Server build 低於固定組建的狀態,以解決記憶體洩漏問題。 當您有包含子存儲程式的儲存程式,而該程式使用可進一步使用游標的 temp 資料表時,可能會發生這種情況。 您可能會注意到 MEMORYCLERK_SQLOPTIMIZER sys.dm_os_memory_clerks,並 MEMOBJ_EXECCOMPILETEMP 從 sys.dm_os_memory_objects 到較高的方向。如需詳細資訊,請參閱知識庫文章。 |
SQL Server 2012 |