次の方法で共有


MSSQLSERVER_3989

適用対象:SQL Server

詳細

属性
製品名 SQL Server
イベント ID 3989
イベント ソース MSSQLSERVER
コンポーネント SQLEngine
シンボル名 XACT_UNSUPPORT_PARALLEL_TRAN3
メッセージ テキスト 新しい要求は、有効なトランザクション記述子を含んでいる必要があるので、この要求を開始できません。

説明

このエラーは、XACT_ABORT セッション設定が ON である間に、SQL Server のリモート インスタンスによってホストされる複数のテーブルを結合する分散クエリを実行すると発生します。 次のようなエラー メッセージがユーザーに報告されます。

メッセージ 3989、レベル 16、状態 1、行 #
新しい要求は、有効なトランザクション記述子を含んでいる必要があるので、この要求を開始できません。

原因

次の条件に該当するとき、SQL Server に分散クエリ (DQ) を処理する方法には、いくつかの設計上の制限があります。

  • SQL Server によって 1 つの SQL Server リモート データ ソースの複数のテーブルが結合される。
  • クエリを発行しているセッションが分散トランザクションに登録されていない。

この状況でクエリを実行しようとすると、「説明」セクションに記載されている 2 つのエラーのいずれかが発生する可能性があります。

ユーザー アクション

この問題を回避するには、分散クエリを 'begin distributed transaction' ステートメントで囲みます。

BEGIN DISTRIBUTED TRANSACTION
/*The actual Distributed Query goes next, outside of comments*/
COMMIT TRANSACTION