現象
たとえば次のようなシナリオを考えてみます。
Microsoft SQL Serverで一時テーブルを作成するストアド プロシージャがあります。
ストアド プロシージャが発行し、クエリが次の条件を満たすクエリを実行します。
- クエリは、ストアド プロシージャによって作成された一時テーブルを参照します。
- クエリには、インデックスが含まれていない WHERE 句があり、不足しているインデックス機能が有効になっています。
ストアド プロシージャが複数のインスタンスから同時に呼び出されるとします。 その後、一時テーブルが頻繁に作成および削除されるため、不足しているインデックスの対応するレコードが頻繁に作成および削除されます。
この状況では、ストアド プロシージャの保留中のクエリが取り消されると、アクセス違反エラーが発生する可能性があります。
解決策
この問題は、SQL Serverの次の累積的な更新プログラムで修正されています。
SQL Server 2017 の累積的な更新プログラム 2
SQL Server 2016 RTM の累積的な更新プログラム 9
SQL Server 2016 SP1 の累積的な更新プログラム 6
SQL Server 2014 SP2 の累積的な更新プログラム 8
SQL Serverの累積的な更新プログラムについて:
SQL Serverの各新しい累積的な更新プログラムには、すべての修正プログラムと、以前の累積的な更新プログラムに含まれていたすべてのセキュリティ修正プログラムが含まれています。 SQL Serverの最新の累積的な更新プログラムを確認してください。
SQL Server 2017 の最新の累積的な更新プログラム
SQL Server 2016 の最新の累積的な更新プログラム
SQL Server 2014 の最新の累積的な更新プログラム
回避策
この問題の回避策は、不足しているインデックスの収集を抑制するトレース フラグ (TF) 2392 を有効にすることです。
追加情報
不足しているインデックス機能の詳細については、次のリンクを参照してください。
状態
Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。
参考資料
マイクロソフトでソフトウェア更新プログラムの説明に使用する用語集を参照してください。