在哪里可以找到sqljdbc_xa.dll文件?

时间:2016-05-18 07:15:48

标签: sql-server jdbc dll xa

我正在尝试为next_page上运行的MS sql server 2008启用XA交易。

为此,我必须将Windows server 2008 R2文件从JDBC安装目录复制到Binn目录。

此数据库服务器在磁盘中的任何位置都没有任何此类文件,因此我无法访问安装CD。有什么方法可以得到这个特定的文件吗?

3 个答案:

答案 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)

请参考链接:https://docs.microsoft.com/en-us/sql/connect/jdbc/understanding-xa-transactions?view=sql-server-ver15

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'