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