現象
Microsoft SQL Server 2008 R2、SQL Server 2012、または SQL Server 2014 で DML トリガーを含むテーブルがあり、そのトリガーで、挿入/削除されたテーブルを他のテーブルと結合するとします。 このテーブルで DML ステートメントを実行すると、トリガーのコンパイル中にアクセス違反が発生し、次のエラーが表示されることがあります。
現在のコマンドで重大なエラーが発生しました。 結果は破棄する必要があります。
さらに、次のエラーが SQL Server のエラーログに記録されます。
<date><time> spid # * * * * <FilePath に送信されたスタックダンプ><><spid # SqlDumpExceptionHandler: プロセス # 生成された致命的な例外 c0000005>。 SQL Server がこのプロセスを終了しています。<日付><時> spid # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *><>spid # *<date><1<のスタックダンプを開始してください::><><2 date><Time><5 spid # *><6 date><><9><0 spid # *><日付><3><4><spid # *><7 DATE><8><>spid # * 例外アドレス = 00000000009E4F2A モジュール (sqlservr.exe +) します。 00000000002D4F2A)<日付><時刻>spid # * の例外コード = c0000005 EXCEPTION_ACCESS_VIOLATION< date><><spid # *><><><>SQL_query_code spid # * の日付<Date><Time> 510
解決方法
この問題は、SQL Server の次の累積的な更新プログラムで最初に修正されました。
SQL Server 2012 SP2 の累積更新プログラム1 /en-us/help/2976982
SQL Server 2014 の累積更新プログラム2 /en-us/help/2967546
SQL Server 2012 SP1 の累積更新プログラム10 /en-us/help/2954099
SQL Server 2008 R2 SP2 の累積更新プログラム12 /en-us/help/2938478
SQL Server 用の新しい累積更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正が含まれています。 SQL Server の最新の累積的な更新プログラムを確認します。
回避策
この問題を回避するには、挿入/削除されたテーブルを他のテーブルと結合するクエリで直接使わないでください。その場合は、一時テーブルにキャッシュし、クエリで temp テーブルを使用します。
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。