標籤:
javax.transaction.xa.XAException: java.sql.SQLException:無法建立 XA 控制串連。錯誤: 未能找到預存程序‘master..xp_sqljdbc_xa_init‘。
配置JTA SQL Server XADataSource參考:http://technet.microsoft.com/zh-cn/library/aa342335.aspx
來源:http://blog.csdn.net/gjf8510/article/details/16118687
1.sqljdbc_3.0\chs\auth\x86(x64|IA64)\sqljdbc_auth.dll放入WINDOWS\system32中
2.sqljdbc_3.0\chs\xa\x86(x64|IA64)\sqljdbc_xa.dll放入Microsoft SQLServer\MSSQL\Binn\sqljdbc_xa.dll
3.執行xa_install.sql
4.為SQL Server登入使用者賦予許可權。可參與:http://www.blogjava.net/zyw090111/
如果要同時使用 XA 資料來源和 Microsoft 分散式交易協調器 (MS DTC)來處理分散式交易,則需要執行以下步驟
(1)在 Windows XP 和 Windows Server 2003 上:
1.在“控制台”中,開啟“管理工具”,然後開啟“元件服務”。也可以單擊“開始”按鈕,單擊“運行”,在“開啟”框中鍵入dcomcnfg,然後按“確定”開啟“元件服務”。
2.展開“元件服務”、“電腦”,按右鍵“我的電腦”,然後選擇“屬性”。
3.單擊“MSDTC”選項卡,再單擊“安全性配置”。
4.選中“啟用 XA 交易”複選框,然後單擊“確定”。這將使 MS DTC 服務重新啟動。
5.再次單擊“確定”以關閉“屬性”對話方塊,然後關閉“元件服務”。
6.停止 SQL Server,然後重新啟動,以確保它與 MS DTC 更改同步。
(2)在Win8或Server 2008上:
1.在“控制台”中,開啟“管理工具”,然後開啟“元件服務”。也可以單擊“開始”按鈕,單擊“運行”,在“開啟”框中鍵入dcomcnfg,然後按“確定”開啟“元件服務”。
2.展開“元件服務”\“電腦”\"Distribute Transaction Coordinator",按右鍵“本地DTC”,然後選擇“屬性”。
3.單擊“安全”選項卡,再單擊“啟用XA事務”。
4.然後單擊“確定”。這將使 MS DTC 服務重新啟動。
5.再次單擊“確定”以關閉“屬性”對話方塊,然後關閉“元件服務”。
6.停止 SQL Server,然後重新啟動,以確保它與 MS DTC 更改同步。
註:在這些配置完成以後如果還出現:
錯誤:atomikos:error in recovery。
1.驅動程式有問題。即sqljdbc4.jar。我之前遇到這種問題後就重新在Miscrosoft官網上下載了“sqljdbc_3.0.1301.101_chs.exe";解壓後,所有的配置都用該解壓包中的檔案。包括(sqljdbc_xa.dll)
2.SQL Server 2000用的是x86(即32)位的檔案來配置。因為通過查詢分析器輸入"select @@version"來查看SQL的版本後就會發現,即使作業系統是Server 2003 X64位,但SQL Server 2000仍然是32位的。
在WIn8上面輸入“select @@version”後得到版本號碼“Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Apr 2 2010 15:48:46 Copyright (c) Microsoft Corporation Developer Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) ”,由此可看出SQL Server是X64的。
3.SQL Server 2000在配置JTA XADataSource時,如果用sqljdbc.jar包,裡面是沒有com.microsoft.sqlserver.jdbc.SQLServerXADataSource該類的。因此SQL Server 2000也用sqljdbc4.jar該包來配置。
通過這些後應該沒有什麼問題了。困擾了我1周的問題啊,如果所有都配置好後還出問題,肯定就是jdbc驅動程式有問題,這得感謝一網路朋友的提醒!!!在此感謝。
javax.transaction.xa.XAException: java.sql.SQLException: 無法建立 XA 控制串連。(SQL 2000,SQL2005,SQL2008)