0

2 つのデータベースに対して分散クエリを実行している Business Objects Web Intelligence レポートがあります。

BEGIN DISTRIBUTED TRANSACTION QUERY を含むこのクエリを実行すると、

SET xact_abort ON
GO
USE Pipeline2
GO
BEGIN DISTRIBUTED TRANSACTION
SELECT * FROM [CQSR_PROD].CqUSer.Cq4User1.Defect
COMMIT TRAN
GO

次のエラーが表示されます。

サーバー: メッセージ 7391、レベル 16、状態 1、行 2 OLE DB プロバイダー 'SQLOLEDB' が分散トランザクションを開始できなかったため、操作を実行できませんでした。[OLE/DB プロバイダーがメッセージを返しました: 新しいトランザクションは、指定されたトランザクション コーディネーターに登録できません。] OLE DB エラー トレース [OLE/DB プロバイダー 'SQLOLEDB' ITransactionJoin::JoinTransaction が 0x8004d00a を返しました]。

このエラーを解決したいです。この KB 記事を見たことがあります...

http://support.microsoft.com/kb/839279

これまでのところ、システム管理者は「インバウンドを許可する」チェックボックスを有効にしましたが、それは役に立ちませんでした. すべてのサーバーが Windows 2003 サーバーとして関係していると思います。

運用サーバーに変更を加えて、KB 記事で説明されている残りのオプションを試すことは、変更について非常に慎重であるため、歯を抜くよりも悪いことです。その結果、回避策を探しています:

クエリ時に分散トランザクションを実行しないように BO に指示する方法はありますか? 上記のSQLから「BEGIN DISTRIBUTED TRANSACTION」を削除すると、すべて機能します。BO はデフォルトでこれを行うようです。

4

1 に答える 1

0

私は2つの方法を試しました。

1)BOがDISTトランザクションを開始しないようにします。2)サーバーでDISTTRANSを実行したときにBOが返すエラーを解決します。

私は#2の解決策を見つけることに成功しました:

http://www.howtogeek.com/howto/windows/fix-new-transaction-cannot-enlist-in-the-specified-transaction-coordinator-on-server-2003-sp2/

于 2009-07-27T17:42:02.810 に答える