Oracle Distributed Transaction Error

寫了以下的程式做SQL與Oracle的分散式交易:

using (System.Transactions.TransactionScope tx = 
    new System.Transactions.TransactionScope())
{
    //... Update data on SQL Server ...
    using (OracleConnection cn = new OracleConnection(cnStr))
    {
        cn.Open();
        OracleCommand cmdOra = new OracleCommand(
            "INSERT INTO MYLOG VALUES (SYSDATE, 'DEBUG')", cn);
        cmdOra.ExecuteNonQuery();
        cmdOra.CommandText = 
            "SELECT LOGTIME FROM MYLOG WHERE REMARK='DEBUG'";
        OracleDataReader dr = cmdOra.ExecuteReader();
        dr.Read();
        Response.Write(dr["LOGTIME"].ToString());
        dr.Close();
        cn.Close();
    }
    //tx.Complete();
    Response.Write("OK");
}

執行環境為Windows 2008 x64 + ASP.NET 2.0 + System.Data.OracleClient + Oracle 11.1.0.6 x64 Client。程式一直傳回ORA-00161: transaction branch length 105 is illegal (maximum allowed 64) 錯誤。

網路上有不少相關的討論,大都指向Oracle的官方說法:

Windows Vista and Windows Server 2008 introduce new MSDTC changes that do not interoperate with older versions of Oracle Services for MTS. Oracle Services for MTS 10.2.0.4 and higher, with the exception of 11.1.0.6, support these new changes on Windows Vista Service Pack 1 and Windows Server 2008 or higher.

敢情我是中了籤王,10.2.0.4以後版本都可以支援,但11.1.0.6例外。到OTN下載 11107_w2k8_x64_production_client.zip (523MB)。

下載安裝,藥到病除!

歡迎推文分享:
Published 17 October 2009 04:36 AM 由 Jeffrey
Filed under: , , ,
Views: 7,303



意見

沒有意見

你的看法呢?

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

5 + 3 =

搜尋

Go

<October 2009>
SunMonTueWedThuFriSat
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

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

文章典藏
其他功能

這個部落格


Syndication