FIX SQL Server 2005 では、並列実行プランを実行すると、アクセス違反のエラー メッセージ受け取ることがあります。

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

英語版 KB:912885
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
# をバグ: 420246 (SQLBUDT)
Microsoft Microsoft SQL Server 2005年修正プログラム 1 つのダウンロード ファイルとして配布しています。修正プログラムは累積的であるため、各新しいリリースすべての修正プログラムが含まれているし、以前の SQL Server 2005 に含まれていたすべてのセキュリティ修正プログラム リリースを修正します。
概要
ここにはこの修正プログラムのリリースに関する次について説明します。
  • この修正プログラム パッケージで修正される問題
  • この修正プログラム パッケージをインストールするための必要条件
  • この修正プログラム パッケージをインストールした後、コンピューターを再起動する必要がありますか
  • 修正プログラム パッケージが他の修正プログラム パッケージによって置き換えられますかどうか
  • レジストリの変更が必要かどうか
  • この修正プログラム パッケージに含まれているファイル
現象
Microsoft SQL Server の 2005 年には、次の条件に該当する場合、アクセス違反のエラー メッセージが表示されます。
  • テーブルに IGNORE_DUP_KEY オプションを使用してインデックスを作成します。
  • このインデックスには、新しい行を挿入する INSERT ステートメントを実行します。
  • 計画が INSERT ステートメントを平行になります。
  • パラメーターを使用して、キー列、IGNORE_DUP_KEY オプションのいずれかの値が用意されています。
また、次のようなエラー メッセージが表示される可能性があります。
サーバーが現在のコマンドのエラーです。場合は、結果を破棄しなければなりません。
解決方法

修正プログラムの情報

サポートされている修正プログラムがマイクロソフトから入手可能です。ただし、この修正プログラムはこの資料に記載されている問題のみを修正するものです。この修正プログラムはこの問題が発生しているシステムにのみ適用されます。この修正プログラムは、今後さらにテストを受け取ることがあります。したがって、この問題で深刻な影響をされていない場合は、この修正プログラムを含む次のソフトウェア更新プログラムのリリースを待つことをお勧めします。

この修正プログラムがダウンロードできないか場合は、この記事の上部に「修正プログラムのダウンロード」セクションです。このセクションが表示されない場合は、マイクロソフト カスタマー サービス & サポート修正プログラムを入手するに問い合わせてください。

メモ その他の問題が発生した場合、またはトラブルシューティングが必要な場合は、別のサービス リクエストを作成する必要があります。追加の質問およびこの特定の修正プログラムの対象とならない問題については、通常のサポート料金が適用されます。一覧マイクロソフト カスタマー サービス & サポートの電話番号のまたは別のサービス リクエストを作成するには、次のマイクロソフト Web サイトを参照してください。 メモ 「修正プログラムのダウンロード」フォームに修正プログラムが提供されている言語を表示します。お使いの言語が表示されない場合は、修正プログラムがその言語の利用できないためにです。

前提条件

この修正プログラムの前提条件はありません。

情報を再起動します。

この修正プログラムを適用した後コンピューターを再起動するはありません。

レジストリ情報

レジストリを変更するはありません。

ファイル情報

この修正プログラムにはこの資料に記載されている問題を修正するために必要なファイルのみが含まれています。この修正プログラムは、製品を最新のビルドに更新するために必要なすべてのファイルがありません。

この修正プログラムの英語版がファイル属性 (またはそれ以降のファイル属性) が、次のとおり。日付および時刻これらのファイルを世界協定時刻 (UTC) が表示されます。ファイル情報を表示すると、ローカル時刻に変換します。UTC とローカル時刻との時差を確認するを使用して、 タイム ゾーン タブには 日付と時刻 コントロール パネルの項目。
SQL Server 2005 を x86 ベースのシステム x
ファイル名ファイルのバージョンファイルのサイズ日付時間プラットフォーム
Msvcp80.dll8.0.50727.42548,8642005 年 10 月 14 日06: 26x 86
Msvcr80.dll8.0.50727.42626,6882005 年 10 月 14 日06: 26x 86
Sqldiscoveryapi.dll2005.90.1518.0527,0642006 年 1 月 21 日00: 11x 86
SQL Server 2005 x 64 edition
ファイル名ファイルのバージョンファイルのサイズ日付時間プラットフォーム
Msvcp80.dll8.0.50727.421,097,7282005 年 10 月 14 日18: 46x64
Msvcr80.dll8.0.50727.42822,7842005 年 10 月 14 日18: 46x64
Sqldiscoveryapi.dll2005.90.1518.0745,6882006 年 1 月 21 日04: 14x64
SQL Server 2005 を Itanium ベースのシステム
ファイル名ファイルのバージョンファイルのサイズ日付時間プラットフォーム
Msvcp80.dll8.0.50727.421,385,4722005 年 10 月 14 日18: 35IA-64
Msvcr80.dll8.0.50727.421,484,8002005 年 10 月 14 日18: 35IA-64
Sqldiscoveryapi.dll2005.90.1518.01,924,3122006 年 1 月 21 日03: 30IA-64
回避策
この問題を回避するには、次の手順を実行します。
  1. アクセス違反が発生、問題の INSERT ステートメントを確認します。
  2. 問題の INSERT ステートメントを直列プランを生成するのには、クエリ オプティマイザーを強制します。したがって、ステートメントは 1 つのスレッドで実行できます。
メモ アクセス違反が発生、問題の INSERT ステートメントを判断できない場合は、この問題を回避するには、方法 3 に記載されている方法を使用できます。

アクセス違反が発生、問題の INSERT ステートメントを確認するには、次の手順を実行します。
  1. SQL Server のエラー ログ ファイルに、アクセス違反のエラー メッセージを探します。
  2. アクセス違反のエラー メッセージの上部にある、入力バッファーの情報を検索します。
  3. 入力バッファーの内容を反映するバッチ情報を検索します。

    メモ バッチには、アクセス違反が発生、問題の INSERT ステートメントが含まれます。
  4. バッチは 1 つだけの INSERT ステートメントが含まれている場合は、このステートメントを問題のある、INSERT ステートメントでは正確です。バッチに複数の INSERT ステートメントが含まれている場合は、問題の INSERT ステートメントを決定する次の操作を実行します。
    1. SQL Server プロファイラーでは、トレース、SQL Server 2005 のインスタンスを作成します。
    2. で、 エラーと警告 イベントのカテゴリを選択、 注意 イベント クラスと、 例外 イベントのクラスです。

      メモ これら event クラスを使用すると、アクセス違反が発生する前に実行する最後のステートメントを確認するのにことができます。

      バッチに Transact SQL ステートメントのみが含まれている場合は、次の追加のイベント クラス] を選択、 TSQL イベントの分類:
      • SQL:BatchStarting
      • SQL:BatchCompleted
      • SQL:StmtStarting
      • SQL:StmtCompleted
      バッチには、アクセス違反が発生するストアド プロシージャが含まれている場合は、次の追加のイベント クラス] を選択、 ストアド プロシージャ イベントの分類:
      • SP: 開始
      • SP: 完了
      • SP:StmtStarting
      • SP:StmtCompleted
    3. クライアント アプリケーションから、同じバッチを実行します。

      アクセス違反を再現するのには、この手順を実行します。次に、問題の INSERT ステートメントを確認できます。バッチを実行すると、トレースが実行されていることを確認します。

      クライアント アプリケーションが SQL Server Management Studio ではない場合、SQL Server Management Studio にも、手動で同じバッチを実行できます。ただし、同じ実行プランとして、問題の原因と、元の実行プランを取得可能性があります。この現象は、SQL Server 2005 は、問題の INSERT ステートメントがバッチ内の別の実行プランを使用して、さまざまなパラメーターを使用して再コンパイルする場合に発生します。
    4. トレースを停止し、問題の INSERT ステートメントを確認するには、トレース結果を分析します。問題の INSERT ステートメントを確認するには、アクセス違反が発生したし、は、クライアント アプリケーションの接続を切断する SPID を確認します。その後の SPID が、INSERT ステートメントは、次の要件を満たしているに注意してください。
      • INSERT ステートメントが開始されます。
      • 同じ INSERT ステートメントは完了しません。
問題の INSERT ステートメントを直列プランを生成するのには、クエリ オプティマイザーを強制するには、次の方法のいずれかを使用します。

方法 1

メモ 問題のある、INSERT ステートメントにアクセスできる場合は、このメソッドを使用します。

追加、 OPTION (MAXDOP 1) 問題のある、INSERT ステートメントを指定します。新しい INSERT ステートメントの例を次に示します。
INSERT INTO MyTable (Col1, Col2)SELECT Col1, Col2 FROM OtherTableOPTION (MAXDOP 1) 
MAXDOP クエリ ヒントの詳細については、「MAXDOP を使用する」セクションに、次のマイクロソフト開発ネットワーク (MSDN) Web サイトを参照してください。

方法 2

メモ 問題のある、INSERT ステートメントにアクセスできない場合は、このメソッドを使用します。たとえば、問題の INSERT ステートメントは、クライアント アプリケーションからです。ただし、クライアント アプリケーションを再構成することはできませんまたは追加するのには、クライアント アプリケーションを再コンパイルできない、 OPTION (MAXDOP 1) 指定します。また、問題の INSERT ステートメントをストアド プロシージャであります。ただし、ストアド プロシージャが暗号化されています。ストアド プロシージャ内のステートメントを変更できません。

使用して、 sp_create_plan_guide ストアド プロシージャに対して、問題の INSERT ステートメントです。これにより、強制的に OPTION (MAXDOP 1) 問題のある、INSERT ステートメントの式です。次を使用する方法の例が、 sp_create_plan_guide ストアド プロシージャです。
sp_create_plan_guide @name = N'planguide_for_MyFailingProc', -- Arbitrary name@stmt = N'INSERT INTO MyOneFailingStatementTable VALUES (@a,@b,@c)', -- The problematic INSERT statement@type = N'OBJECT', @module_or_batch = N'dbo.MyFailingProc', -- The name of the stored procedure that contains the problematic INSERT statement@params = NULL, @hints = N'OPTION (MAXDOP 1)'-- Query hint to prevent parallelism
詳細については、 sp_create_plan_guide ストアド プロシージャは、次の MSDN Web サイトを参照してください。

方法 3

メモ このメソッドは、次の条件のいずれかに該当する場合に使用します。
  • 問題のある、INSERT ステートメントを動的に生成されます。
  • アクセス違反が発生する、INSERT ステートメントを判断できません。
重要です このメソッドは、すべてのクエリは 1 つのスレッドで実行するのには、SQL Server 2005年のインスタンスにできます。このメソッドを使用する提案しないでください。このメソッドはインスタンス上で実行、他のクエリでパフォーマンス上の問題があります。

Transact SQL の次のステートメントを実行します。
sp_configure 'show advanced options', 1;GORECONFIGURE WITH OVERRIDE;GOsp_configure 'max degree of parallelism', 1;GORECONFIGURE WITH OVERRIDE;GO
詳細については、 並列処理の最大程度 オプションには、次の MSDN Web サイトを参照してください。
状況
マイクロソフトでは、この「対象」に記載されているマイクロソフト製品の問題として認識しています。
詳細
SQL Server 更新プログラムの名前付けスキーマの詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
822499Microsoft SQL Server のソフトウェア更新プログラム パッケージの新しい命名方式は
ソフトウェアの更新の用語の詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
824684マイクロソフトのソフトウェア更新プログラムの説明に使用される一般的な用語の説明

プロパティ

文書番号:912885 - 最終更新日: 01/17/2015 12:58:07 - リビジョン: 5.0

  • kbnosurvey kbarchive kbbug kbfix kbqfe kbpubtypekc kbsqlserv2005fix kbhotfixserver kbsql2005engine kbsql2005presp1fix kbautohotfix kbmt KB912885 KbMtja
フィードバック