次の方法で共有


MSSQLSERVER_3989

適用対象: SQL サーバー

詳細

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

説明

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

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

原因

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

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

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

ユーザー アクション

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

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