KB4013128 - 修正: SQL RPC 呼び出しのストアド プロシージャ パラメーターとして SQLCLR UDT が使用されている場合、パフォーマンスが低下し、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)

現象

Microsoft SQL Server 2012、2014、または 2016 を使用し、共通言語ランタイム (SQL CLR) 統合SQL Server使用してユーザー定義型 (UDT) を作成します。

UDT をストアド プロシージャ パラメーターとして使用する場合、パラメーターはリモート プロシージャ 呼び出し (RPC) メカニズムを介してサーバーに渡されます。 このメカニズムは、内部的に UDT をホストするアセンブリをメモリに読み込もうとします。

この状況では、ストアド プロシージャの実行のパフォーマンスが低下する可能性があります。 これは、RPC が SQLCLR アセンブリを不要に読み込んでアンロードしたときに発生する非効率性が原因で発生します。

この問題は、 CLR_AUTO_EVENT 型と CMEMTHREAD 型の待機時間が長い場合に発生します。 これは、複数の同時実行ユーザーが同じストアド プロシージャを実行している場合に特に当てはまります。

解決策

SQL Serverのサービス パック情報

この更新プログラムは、SQL Serverの次のサービス パックで修正されています。

SQL Server 2016 用 Service Pack 2

SQL Server 2014 用 Service Pack 3

SQL Server 2012 用 Service Pack 4

SQL Serverのサービス パックについて:

Service Pack は累積的であり、 最新の Service Pack には新しい修正プログラムと共に、それ以前の Service Pack に含まれていたすべての修正プログラムが含まれています。 このサービス パックの最新の Service Pack と最新の累積的な更新プログラムを適用することをお勧めします。 最新の Service Pack をインストールする前に、以前の Service Pack をインストールする必要はありません。 最新の Service Pack と最新の累積的な更新プログラムの詳細については、次の記事の表 1 を参照してください。

SQL Serverとそのコンポーネントのバージョン、エディション、および更新レベルを決定する方法

状態

Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。

参考資料

マイクロソフトでソフトウェア更新プログラムの説明に使用する用語集を参照してください。