我正在尝试为next_page
上运行的MS sql server 2008
启用XA交易。
为此,我必须将Windows server 2008 R2
文件从JDBC安装目录复制到Binn目录。
此数据库服务器在磁盘中的任何位置都没有任何此类文件,因此我无法访问安装CD。有什么方法可以得到这个特定的文件吗?
答案 0 :(得分:1)
为SQL Server启用XA事务是一个非常明显的过程,涉及:
(a)进入组件服务>分布式事务>本地DTC 并勾选一个框以启用XA交易: 看到 https://blogs.msdn.microsoft.com/dataaccesstechnologies/2011/10/26/how-a-dba-can-confirm-if-microsoft-jdbc-xa-transactions-are-set/
(b)您必须复制与DB可分离的DLL。下载最新的jdbc驱动程序(例如6.0)。 转到SQL Server安装文件夹并搜索: BINN。
你会发现一个已经有dll的binn文件夹。 例如。 somePath \ MicrosoftSQLServer_InstanceRoot \ MSSQL12.SQLEXPRESS \ MSSQL \ BINN
粘贴适当的: sqljdbc_6.0 \ ENU \ XA \ 64 \ sqljdbc_xa.dll 如果你有一个64位的快递版,那就在那里。 否则,请使用32位dll。
如果你把dll放在错误的文件夹中,你会得到一个:
XAConnection java.sql.SQLException:XA错误:XAResource.XAER_RMERR 资源上的start()失败' someAppDatasource':XAER_RMERR:A 事务分支中发生了资源管理器错误 javax.transaction.xa.XAException: com.microsoft.sqlserver.jdbc.SQLServerException:无法加载 DLL SQLJDBC_XA.dll,或它引用的DLL之一。原因:126(The 找不到指定的模块。)在 com.microsoft.sqlserver.jdbc.SQLServerXAResource.DTC_XA_Interface(SQLServerXAResource.java:742) 在 com.microsoft.sqlserver.jdbc.SQLServerXAResource.start(SQLServerXAResource.java:774)
(c)你也得到一个xa_install.sql 那是司机带来的。 你将不得不运行该sql。 它将创建一个用户角色。
(d)您需要转到已使用和选择的数据库主数据库,并选择为XA事务创建的新用户角色。
很抱歉,但是SQL Server的脚本使得启用XA事务变得简单......无论出于什么原因,你必须跳到任何地方,勾选方框才能让它工作。
答案 1 :(得分:0)
根据我的评论,可以从https://msdn.microsoft.com/en-us/library/mt484311(v=sql.110).aspx下载JDBC SQL Server驱动程序,其中还包含配置说明等。
答案 2 :(得分:0)
JDBC XA 分布式事务组件包含在从累积更新 16 开始的 SQL Server 2017 和 SQL Server 2019 中的 SQL Server 引擎中,并且可以通过系统存储过程启用或禁用。驱动程序中的 sqjdbc_xa.dll 不是必需的,建议为这些服务器版本启用服务器组件。要使所需的组件能够使用 JDBC 驱动程序执行 XA 分布式事务,请执行以下存储过程。
在 SQL Server 17 以上,请按照以下 2 个步骤
Step1--> 运行程序:EXEC sp_sqljdbc_xa_install
Step2-->要为 XA 事务启用 MS DTC,请按照上面链接中的步骤操作。
Step3-->在masterdb上执行下面的sql: 使用大师
EXEC sp_grantdbaccess 'testuser', 'testuser'
EXEC sp_addrolemember [SqlJDBCXAUser], 'testuser'