最近在配置多数据源分布式事务,mysql + SQL Server,
项目环境:spring boot + mybatis + druid + Atomikos
mysql一切正常,配置sql server时报错,error:找不到存储过程 'master..xp_sqljdbc_xa_init_ex'。由于头一次接触sql server简直一头雾水,百度了一下是sql server库的服务器没有配置XA事务和安装JDBC插件
官方解释:您必须在安装 Microsoft SQL Server 数据库之后,启动服务器之前配置 XA 事务。SQL Server JDBC 驱动程序为提供对 Java Platform, Enterprise Edition/JDBC 2.0 可选分布式事务的支持。从 SQLServerXADataSource 类获取的 JDBC 连接可参与标准分布式事务处理环境,如 Java 平台、Enterprise Edition (Java EE) 应用程序服务器。
附上官方链接
操作步骤:
1、选择控制面板 > 管理工具 > 组件服务。
2、选择组件服务 > 计算机 > 我的电脑 > Distributed Transaction Coordinator。
3、右键单击本地 DTC,然后选择属性。
4、单击本地 DTC 属性窗口上的安全性选项卡。
5、选中启用 XA 事务复选框,然后单击确定。这将重新启动 MS DTC 服务。
6、再次单击确定以关闭“属性”窗口,然后关闭“组件服务”。
7、重新启动 SQL Server 以确保它与 MS DTC 更改同步。
8、然后下载jdbc插件,我下载的是6.0版本的,附上下载链接 windows系统勾选.exe 下载,
这样一个东西,
9、放到服务器上安装,点击Unzip解压
安装界面!
10、Microsoft JDBC Driver 6.0 for SQL Server\sqljdbc_6.0\chs\xa\x64\sqljdbc_xa.dll
把 sqljdbc_xa.dll 文件copy到SQL Server的binn路径下,
我的路径是C:\Program Files\Microsoft SQL Server\MSSQL11.STARYNI\MSSQL\Binn
11、打开SSMS运行xa_install.sql数据脚本
路径:Microsoft JDBC Driver 6.0 for SQL Server\sqljdbc_6.0\chs\xa\xa_install.sql
我用的sa账号,到这步就可以了,连接成功!,如果是其他账号可以尝试获取账号权限
最后补充一下,如果出现Atomikos无限刷日志的情况在log配置文件中加入
<logger name="com.atomikos" level="error"></logger> 限制只打印error日志就好了