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 はデフォルトでこれを行うようです。