Failed to create the XA control connection. Error: "找不到存储过程 'master..xp_sqljdbc_xa_init_ex'。


抛出异常的环境:使用atomikos配置分布式事务(MySQL和SQL server),在启动项目的时候抛出的异常。

分析原因:没有开启SQL server对XA事务支持

解决办法:

1.首先了解XA事务并下载JDBC驱动,参考:http://technet.microsoft.com/zh-cn/library/aa342335.aspx

2.对下载的驱动进行解压缩得到文件

 

 3.将对应文件放入目标文件夹下,具体使用32位还是64位,看自己的操作系统

  3.1 将auth\x86(x64|IA64)\sqljdbc_auth.dll放入WINDOWS\system32中

  3.2 将xa\x86(x64|IA64)\sqljdbc_xa.dll放入Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn下  (具体在那个硬盘下,需要看SQL server的安装位置)

4.执行xa_install.sql生成sqlJDBCXAUser角色

5.创建新的SQL server用户,并将该角色赋给新建用户,可参考:http://www.blogjava.net/zyw090111/

6.修改操作系统上的配置:

  6.1 在 Windows XP 和 Windows Server 2003 上:

    6.1.1.在“控制面板”中,打开“管理工具”,然后打开“组件服务”。也可以单击“开始”按钮,单击“运行”,在“打开”框中键入dcomcnfg,然后按“确定”打开“组件服务”。

    6.1.2.展开“组件服务”、“计算机”,右键单击“我的电脑”,然后选择“属性”。

    6.1.3.单击“MSDTC”选项卡,再单击“安全性配置”。

    6.1.4.选中“启用 XA 事务”复选框,然后单击“确定”。这将使 MS DTC 服务重新启动。

    6.1.5.再次单击“确定”以关闭“属性”对话框,然后关闭“组件服务”。

    6.1.6.停止 SQL Server,然后重新启动,以确保它与 MS DTC 更改同步。

  6.2 在Win8或Server 2008上:

    6.2.1.在“控制面板”中,打开“管理工具”,然后打开“组件服务”。也可以单击“开始”按钮,单击“运行”,在“打开”框中键入dcomcnfg,然后按“确定”打开“组件服务”。

    6.2.2.展开“组件服务”\“计算机”\"Distribute Transaction Coordinator",右键单击“本地DTC”,然后选择“属性”。

    6.2.3.单击“安全”选项卡,再单击“启用XA事务”。

    6.2.4.然后单击“确定”。这将使 MS DTC 服务重新启动。

    6.2.5.再次单击“确定”以关闭“属性”对话框,然后关闭“组件服务”。

    6.2.6.停止 SQL Server,然后重新启动,以确保它与 MS DTC 更改同步。

7.配置时候遇到的问题:

  7.1 所有的操作都配置好并且重启了SQL server以后再次启动项目抛出异常:

    Failed to create the XA control connection. Error: "无法加载 DLL SQLJDBC_XA.dll 或它引用的一个 DLL。原因:

    无法加载首先想到的就是找不到dll文件,,但是我明明放进去了,当时我参考了一篇博客放置的DLL SQLJDBC_XA.dll文件,由于博客描述不清楚,然后我全局搜索文件找到了两个,我就把dll放进去了其中我感觉更像的哪一个,结果明显不行,那就只能两个一起放了,后边进行追溯原因的时候发现第一次放的位置是c盘下的,但是我的SQL server安装的时候我选择的是e盘,所以会抛出上边的异常

 

原文:https://blog.csdn.net/gjf8510/article/details/16118687

该文章大部分内容来自于https://blog.csdn.net/gjf8510/article/details/16118687,本人只是对其中的一些地方进行了更改