在哪里可以找到 sqljdbc_xa.dll 文件?
Where to find the sqljdbc_xa.dll file?
我正尝试在 Windows server 2008 R2
上为 MS sql server 2008
运行 启用 XA 事务。
为此,我必须将 SQLJDBC_XA.dll
文件从 JDBC 安装目录复制到 Binn 目录。
此数据库服务器的磁盘中没有任何此类文件,而且我无权访问安装 CD。有什么办法可以获得这个特定文件吗?
根据我的评论,JDBC SQL 服务器驱动程序可以从 https://msdn.microsoft.com/en-us/library/mt484311(v=sql.110).aspx 下载,其中还包含配置等说明。
为 SQL 服务器启用 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) 您必须复制与数据库分离的 DLL。下载最新的 jdbc 驱动程序(例如 6.0)。
转到 SQL 服务器安装文件夹并搜索:
宾.
您会发现一个 binn 文件夹,里面已经有 dll。
例如。 somePath\MicrosoftSQLServer_InstanceRoot\MSSQL12.SQLEXPRESS\MSSQL\Binn
粘贴合适的:
sqljdbc_6.0\enu\xa\x64\sqljdbc_xa.dll
Dll 在那里,如果你有 64 位 Express 版本。
否则,使用 32 位 dll。
如果您将 dll 放在错误的文件夹中,您将得到:
XAConnection java.sql.SQLException: XA error: XAResource.XAER_RMERR
start() failed on resource 'someAppDatasource': XAER_RMERR : A
resource manager error has occurred in the transaction branch
javax.transaction.xa.XAException:
com.microsoft.sqlserver.jdbc.SQLServerException: Could not load the
DLL SQLJDBC_XA.dll, or one of the DLLs it references. Reason: 126(The
specified module could not be found.). at
com.microsoft.sqlserver.jdbc.SQLServerXAResource.DTC_XA_Interface(SQLServerXAResource.java:742)
at
com.microsoft.sqlserver.jdbc.SQLServerXAResource.start(SQLServerXAResource.java:774)
c) 你也会得到一个 xa_install.sql
随驱动程序一起提供。
你将不得不 运行 那 sql。
它将创建一个用户角色。
(d) 您需要转到您使用过的 select 数据库主数据库,以及 select 为 XA 事务创建的新用户角色。
抱歉,但是 SQL 服务器并没有使启用 XA 事务变得简单......无论出于何种原因,您都必须跳到所有勾选框才能使其工作。
JDBC XA 分布式事务组件包含在 SQL Server 引擎中,从累积更新 16 开始的 SQL Server 2017 和 SQL Server 2019,以及可以使用系统存储过程启用或禁用。驱动程序中的 sqjdbc_xa.dll 不是必需的,建议为这些服务器版本启用服务器组件。要使所需的组件能够使用 JDBC 驱动程序执行 XA 分布式事务,请执行以下存储过程。
在 SQL 服务器 17 之后,执行以下 2 个步骤
Step1--> 运行 程序:EXEC sp_sqljdbc_xa_install
Step2-->要为 XA 事务启用 MS DTC,请按照上面 link 中的步骤操作。
Step3-->在masterdb上执行以下sql:
使用大师
执行 sp_grantdbaccess 'testuser', 'testuser'
EXEC sp_addrolemember [SqlJDBCXAUser], 'testuser'
我正尝试在 Windows server 2008 R2
上为 MS sql server 2008
运行 启用 XA 事务。
为此,我必须将 SQLJDBC_XA.dll
文件从 JDBC 安装目录复制到 Binn 目录。
此数据库服务器的磁盘中没有任何此类文件,而且我无权访问安装 CD。有什么办法可以获得这个特定文件吗?
根据我的评论,JDBC SQL 服务器驱动程序可以从 https://msdn.microsoft.com/en-us/library/mt484311(v=sql.110).aspx 下载,其中还包含配置等说明。
为 SQL 服务器启用 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) 您必须复制与数据库分离的 DLL。下载最新的 jdbc 驱动程序(例如 6.0)。 转到 SQL 服务器安装文件夹并搜索: 宾.
您会发现一个 binn 文件夹,里面已经有 dll。 例如。 somePath\MicrosoftSQLServer_InstanceRoot\MSSQL12.SQLEXPRESS\MSSQL\Binn
粘贴合适的: sqljdbc_6.0\enu\xa\x64\sqljdbc_xa.dll Dll 在那里,如果你有 64 位 Express 版本。 否则,使用 32 位 dll。
如果您将 dll 放在错误的文件夹中,您将得到:
XAConnection java.sql.SQLException: XA error: XAResource.XAER_RMERR start() failed on resource 'someAppDatasource': XAER_RMERR : A resource manager error has occurred in the transaction branch javax.transaction.xa.XAException: com.microsoft.sqlserver.jdbc.SQLServerException: Could not load the DLL SQLJDBC_XA.dll, or one of the DLLs it references. Reason: 126(The specified module could not be found.). at com.microsoft.sqlserver.jdbc.SQLServerXAResource.DTC_XA_Interface(SQLServerXAResource.java:742) at com.microsoft.sqlserver.jdbc.SQLServerXAResource.start(SQLServerXAResource.java:774)
c) 你也会得到一个 xa_install.sql 随驱动程序一起提供。 你将不得不 运行 那 sql。 它将创建一个用户角色。
(d) 您需要转到您使用过的 select 数据库主数据库,以及 select 为 XA 事务创建的新用户角色。
抱歉,但是 SQL 服务器并没有使启用 XA 事务变得简单......无论出于何种原因,您都必须跳到所有勾选框才能使其工作。
JDBC XA 分布式事务组件包含在 SQL Server 引擎中,从累积更新 16 开始的 SQL Server 2017 和 SQL Server 2019,以及可以使用系统存储过程启用或禁用。驱动程序中的 sqjdbc_xa.dll 不是必需的,建议为这些服务器版本启用服务器组件。要使所需的组件能够使用 JDBC 驱动程序执行 XA 分布式事务,请执行以下存储过程。
在 SQL 服务器 17 之后,执行以下 2 个步骤
Step1--> 运行 程序:EXEC sp_sqljdbc_xa_install
Step2-->要为 XA 事务启用 MS DTC,请按照上面 link 中的步骤操作。
Step3-->在masterdb上执行以下sql: 使用大师
执行 sp_grantdbaccess 'testuser', 'testuser'
EXEC sp_addrolemember [SqlJDBCXAUser], 'testuser'