SQL Server でテーブル変数にカーソルを使用するストアド プロシージャを実行すると、アクセス違反を修正します。

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:3138930
現象
Microsoft SQL Server 2012年または SQL Server 2014年でテーブル変数にカーソルを使用するストアド プロシージャを作成することを想定しています。さらに、ストアド プロシージャは、カーソルと、現在のステートメントを使用してテーブルを更新します。

ストアド プロシージャの例を次に示します。
CREATE PROCEDURE dbo.usp_TestSP AS  BEGIN  DECLARE @TableVar TABLE (SomeInt INT NULL) INSERT @TableVar VALUES (NULL)  DECLARE @curInt INT, @newInt INT SET @newInt = 1  DECLARE ccc CURSOR LOCAL FOR SELECT SomeInt FROM @TableVar WHERE SomeInt IS NULL  OPEN ccc  FETCH NEXT FROM ccc INTO @curInt UPDATE @TableVar SET SomeInt = @newInt WHERE CURRENT OF cccCLOSE ccc  SELECT * FROM @TableVar END 

Sp_refreshsqlmoduleシステムを使用して、ストアド プロシージャを実行するとストアド プロシージャでアクセス違反が発生する可能性があり、以下のようなエラー メッセージが表示される場合があります。
Msg 596、レベル 21、状態 1Cannot は、セッションが強制終了状態のために実行を続行します。現在のコマンドでメッセージ 0、レベル 20、状態 0 a の重大なエラーが発生しました。結果は破棄する必要があります。

この状況では、SQL Server エラー ログに以下のようなエラーも書き込まれます。
日付 time.730 spid51 SqlDumpExceptionHandler: プロセス 51 に致命的な例外が生成される c0000005 を参照します。SQL Server はこのプロセスを終了しています。
date time.730 spid51 * *******************************************************************************
time.730 spid51 の日 *
日付 time.730 spid51 * 開始スタックをダンプします。
日付 time.730 spid51 * 日付時刻 spid 51
time.730 spid51 の日 *
time.730 spid51 の日 *
日付 time.730 spid51 * 例外アドレス = 00007FFC270236D5 Module(sqllang+00000000005036D5)
日付 time.730 spid51 * 例外コード = c0000005 参照
日付 time.730 spid51 * アドレス 0000006F00620074 の読み取りアクセス違反が発生しました
日付 time.730 spid51 * 入力バッファー 136 バイト -
日付 time.730 spid51 * 実行 sp_refreshsqlmodule N'[dbo] です。[usp_TestSP]'
time.730 spid51 の日 *
time.730 spid51 の日 *

解決方法

累積的な更新プログラムの情報

以下の更新プログラムでこの問題が修正します。
SQL Server 用の最新の累積的な更新をインストールする推奨事項。

SQL Server 用の新しい累積的な更新プログラムには、以前の累積的な更新プログラムに含まれていた、すべての修正プログラムおよびすべてのセキュリティ更新プログラムが含まれています。以下で、SQL Server 用の最新の累積的な更新プログラムを確認してください。
状況
マイクロソフトでは、この問題を対象製品として記載されているマイクロソフト製品の問題として認識しています。
関連情報
について説明します 用語集 を参照してください。

警告: この記事は自動翻訳されています

プロパティ

文書番号:3138930 - 最終更新日: 05/31/2016 10:11:00 - リビジョン: 3.0

Microsoft SQL Server 2012 Service Pack 3, Microsoft SQL Server 2012 Service Pack 2, Microsoft SQL Server 2014 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbfix kbexpertiseinter kbsurveynew kbmt KB3138930 KbMtja
フィードバック