現象
次のような状況で問題が発生します。
-
Microsoft SQL Server 2012 の子ストアドプロシージャを含むストアドプロシージャがある。
-
子ストアドプロシージャは、パラメーターとしてテーブルを使います。
-
一時テーブルを作成し、それをパラメーターとして子ストアドプロシージャに渡します。
-
子ストアドプロシージャは、カーソルを使って、一時的なテーブルに対してクエリを実行します。
このシナリオでは、SQL Server 2012 のパフォーマンスを低下させるメモリリークが発生します。
解決方法
累積的な更新プログラムの情報
SQL Server 2012 Service Pack 1 (SP1) の累積更新プログラム3
この問題の修正プログラムは、累積的な更新プログラム3で最初にリリースされました。SQL Server 2012 SP 1 用にこの累積的な更新プログラムパッケージを入手する方法の詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を参照してください。
2812412 SQL Server 2012 Service Pack 1 の累積更新プログラムパッケージ3注: ビルドは累積的であるため、それぞれの新しい修正プログラムには、以前の SQL Server 2012 SP 1 の修正プログラムに含まれていたすべての修正プログラムとセキュリティ修正プログラムが含まれています。 この修正プログラムを含む最新の修正プログラムを適用することを検討することをお勧めします。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。
2772858 SQL Server 2012 Service Pack 1 がリリースされた後にリリースされた SQL Server 2012 ビルド
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
詳細情報
次の表では、SQL Server のインスタンスと、ルールの評価対象の SQL Server のバージョンの [Symptoms] セクションに記載されている条件を自動的にチェックする製品またはツールについて詳しく説明します。
ルール ソフトウェア |
ルール タイトル |
ルールの説明 |
ルールが評価される対象である製品バージョン |
---|---|---|---|
System Center Advisor |
SQL server 2012 の入れ子になったストアドプロシージャの一時的なテーブルに対してクエリを実行すると、SQL Server のメモリリークが発生する |
この SQL Server インスタンスアドバイザーでは、メモリリークの問題に対して、修正されたビルドよりも低い SQL Server ビルドが存在することが検出されました。 これは、カーソルをさらに使用する一時テーブルを使用する、子ストアドプロシージャを含むストアドプロシージャがある場合に発生する可能性があります。 Sys.dm_os_memory_objects MEMOBJ_EXECCOMPILETEMP sys.dm_os_memory_clerks の MEMORYCLERK_SQLOPTIMIZER が表示されることがあります。詳細については、サポート技術情報の記事を参照してください。 |
SQL Server 2012 |