Distributed Transaction With MS OLEDB Provider For Oracle

在SQL Server上設了Linked Server連到Oracle,卻發現T-SQL加上BEGIN TRAN後會傳回以下錯誤:
The operation could not be performed because OLE DB provider "MSDAORA" for linked server "MyOra" was unable to begin a distributed transaction.

做了許多嘗試,得到以下結論:

  1. Linked Server使用的是Microsoft OLE DB Provider For Oracle
  2. 使用.NET 2.0 TransactionScope包System.Data.OracleClient.OracleConenction可以支援MTS
  3. 用ASP加<%@ TRANSACTION=Required %>測試,用Oracle的OLEDB Driver(Provider=OraOLEDB.Oracle)可以支援MTS,用MS版的OLEDB(Provider=MSDAORA)則是失敗收場

最後由ASP的錯誤訊息8000048找到了一個關鍵字GetXaSwitch,讓我想到去檢查MSDTC的設定,果然發現有個Enable XA Transactions選項沒有被勾選。啟用後,一切OK,哈里路亞!

PS: 另一個很容易出錯的地方是MTxOCI的Registry設定,文件在這裡。(Oracle 9i以前的版本看這裡)

歡迎推文分享:
Published 07 November 2007 11:23 PM 由 Jeffrey
Views: 8,916



意見

沒有意見

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<November 2007>
SunMonTueWedThuFriSat
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication