KB4013128 - 修正:當 SQLCLR UDT 作為 SQL RPC 呼叫的儲存程序參數時,效能下降及 CLR_AUTO_EVENT 與 CMEMTHREAD 等待時間過長

套用到
SQL Server 2012 Enterprise SQL Server 2012 Developer SQL Server 2012 Enterprise Core SQL Server 2012 Standard SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

症狀

你可以使用 2012、2014 或 2016 SQL Server Microsoft,並透過SQL Server公共語言執行環境 (SQL CLR) 整合,建立使用者定義型別 (UDT) 。

若使用 UDT 作為儲存程序參數,該參數會透過遠端程序呼叫 (RPC) 機制傳達給伺服器。 此機制內部嘗試載入承載 UDT 的組件。

在這種情況下,你可能會遇到儲存程序執行效能下降的情況。 這是因為 RPC 不必要地載入和卸載 SQLCLR 組合語言時,導致效率低下。

這個問題表現為 CLR_AUTO_EVENTCMEMTHREAD 類型的等待時間過長。 當多個同時使用者同時執行相同的儲存程序時,這點尤其明顯。

解決方式

SQL Server 服務包資訊

此更新已在以下 SQL Server 服務包中修正:

Service Pack 2 for SQL Server 2016

Service Pack 3 for SQL Server 2014

Service Pack 4 for SQL Server 2012

關於 SQL Server 服務包:

Service Pack 是累積性的。 每個新版 Service Pack 都包含前一版 Service Pack 中所有的修正程式,以及任何新增的修正程式。 我們的建議是套用該服務包的最新服務包及累積更新。 所以在安裝最新版的 Service Pack 之前,您不需要安裝前一版的 Service Pack。 請使用以下文章中的表1,查詢最新服務包及最新累積更新的更多資訊。

如何確定 SQL Server 及其元件的版本、版本與更新等級

狀態

Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。

參考資料

了解 Microsoft 用來說明軟體更新的術語