原:现在一个mule流程需要同时访问多个数据库且保证事务的完整性,需要修改MS SQL数据库支持XA。
MS SQL数据库 数据库默认是不支持XA 数据源和 Microsoft 分布式事务处理协调器 (MS DTC),现在需要配置使用 XA 数据源和 Microsoft 分布式事务处理协调器 (MS DTC) 来处理分布式事务过程如下:
首先:配置 JDBC 分布式事务组件:
JDBC 分布式事务组件包含在 JDBC 驱动程序安装的 xa 目录中。这些组件包括 xa_install.sql 和 sqljdbc_xa.dll 文件。安装Microsoft SQL Server JDBC Driver 3.0过程如下:
- 下载Microsoft SQL Server JDBC Driver:sqljdbc_3.0.1301.101_enu.exe或sqljdbc_4.2.6225.100_enu.exe,地址http://www.microsoft.com/en-us/download/details.aspx?id=21599或https://www.microsoft.com/en-us/download/details.aspx?id=11774
- 运行sqljdbc_3.0.1301.101_enu.exe,解压缩到文件夹Microsoft SQL Server JDBC Driver 3.0 。
- 拷贝解压缩后的64位的sqljdbc_xa.dll到SQLServer Binn目录下:
- 在SQL Server Management Studio中运行xa_install.sql,生成相关sp
- 检查对应SP是否生成,例如xp_sqljdbc_xa_init
- 授权用户访问执行这些sp
USE master
GO
EXEC sp_grantdbaccess 'appuser', 'appuser'
GO
EXEC sp_addrolemember [SqlJDBCXAUser], 'appuser'
验证:用'appuser'登陆ssms执行SP验证
exec xp_sqljdbc_xa_init
Command(s) completed successfully.
其次,运行 MS DTC 服务
在服务管理器中,MS DTC 服务配置为“自动启动”(PRC SAM服务也一样需要自动且已经启动,服务器已经是可用状态,不需要修改),以确保其在启动 SQL Server 服务时运行。若要为 XA 事务启用 MS DTC,必须执行以下步骤:
- 从“开始 ”、“管理工具”、 打开“组件服务”。
- 依次展开“组件服务”、“计算机”、“我的电脑”和“分布式事务处理协调器”。
- 右键单击“本地 DTC”,再选择“属性”。
- 单击“本地 DTC 属性”对话框上的“安全”选项卡。
- 选中“启用 XA 事务”复选框,然后单击“确定”。这将使 MS DTC 服务重新启动。
- 再次单击“确定”以关闭“属性”对话框,然后关闭“组件服务”。
- 停止 SQL Server,然后重新启动,确保它与 MS DTC 更改同步。