System.Data.OracleClient 程序集的早期版本不支持分布式的事務。 因此,該依賴項不存在 System.Data.OracleClient 程序集版本 1.1 之前。
當您執行分布式的事務活動時 System.Data.OracleClient 程序集使用 Oramts.dll 文件。 當您嘗試執行 nontransacted 活動時, 或者當您使用本地事務時不加載 System.Data.OracleClient 程序集。 如果 Oracle 客戶端連接軟件,在安裝過程中不包括此組件,您嘗試使用分布式的事務與 System.Data.OracleClient ,您可能會收到以下錯誤信息: System.Data.OracleClient: Unable to load DLL (oramts.dll) 與 Oracle 客戶端連接組件安裝在 Oramts.dll 文件。 它不被分發使用任何 Microsoft 軟件。 Oramts.dll 文件不是作為默認安裝包含在安裝 Oracle 客戶端連接軟件時。 若要安裝此組件必須單擊以選中 Oracle Services for Microsoft Transaction Server 在安裝 Oracle 客戶端連接軟件時復選框。 有關這些組件的信息,請訪問下面的 Oracle Web 站點:
http://www.oracle.com/technology/tech/windows/ora_mts/index.html(http://www.oracle.com/technology/tech/windows/ora_mts/index.html)
先到Oracle官方網站上面下載ODAC92070.exe因為這是為了支持分布式事務的一個數據庫連接包,Oracle跟微軟官方網站上有說明,Oracle不支持單獨將oramts.dll分布的方式,就是說這個包不能單獨下載,只能下載這個安裝,
安裝完成后, 再運行代碼,仍就事務出錯,報的錯誤一樣,查看環境變量中的path,並在Oracle92Home目錄,查找oramts.dll已經存在, 后來在一英文網站,說Oramts.dll這個dll是因為在debug模式下面編譯的,所以不能正常使用 通過DependencyWalker查看依賴項,發現少了msvcrtd.dll,這個在裝上VS6.0,VC++的機器上有,這是一個VC的編譯器文件, 然后下載一個msvcrtd.dll拷貝到C:/windows/System32下面,再試分布式事務,成功。希望這編文章能給剛開始使用VS2005+Oracle數據庫的一些朋友一點點幫助.
當然要是使用Oracle10g,Oracle11g相關版本,只要下載對應的Oracle Data Access Components (ODAC)數據訪問組件就可解決 Oracle數據庫客戶端訪問組件下載地址:http://www.oracle.com/technology/software/tech/windows/odpnet/index.html
若有問題可按下列步驟解決:
1. 檢查安裝時有沒有裝 Oracle Services for Microsoft Transaction Server
2.到bin目錄如(oracle/product/10.1.0/db_1/bin),找找有沒有oramts.dll,如果沒有的話就證明沒有安裝上面的服務,可以考慮重新安裝客戶端。
3.如果是10g的話,看看有沒有oramts10.dll,有的話再復制一份,改名為oramts.dll。
4.如果安裝完客戶端提示連接字符串錯誤!到oracle/product/10.1.0/Client_1/network/ADMIN目錄下,找配置文件tnsnames.ora,有的話打開看里面的連接字符串是怎么寫的,自己寫沒寫錯,沒有的話可以手動添加此文件,示例代碼如下: ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl10) ) )
5.可以通過客戶端工具Net Configuration Assistant 來重新配置上述連接。