我正在尝试为在 Windows server 2008 R2
上运行的 MS sql server 2008
启用 XA 事务。
为此,我必须将 SQLJDBC_XA.dll
文件从 JDBC 安装目录复制到 Binn 目录。
该数据库服务器在磁盘中的任何位置都没有任何此类文件,并且我无权访问安装 CD。有什么方法可以获取这个特定文件吗?
最佳答案
为 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) 您必须复制与数据库分开的 DLL。下载最新的 jdbc 驱动程序(例如 6.0)。 转到 SQL Server 安装文件夹并搜索: 宾恩。
你会发现一个 binn 文件夹,里面已经有 dll。 例如。 somePath\MicrosoftSQLServer_InstanceRoot\MSSQL12.SQLEXPRESS\MSSQL\Binn
粘贴适当的: sqljdbc_6.0\enu\xa\x64\sqljdbc_xa.dll 如果您有 64 位 Express 版本,则 Dll 就在那里。 否则,使用 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) 您需要转到使用的数据库主数据库并选择,然后选择为 XA 事务创建的新用户角色。
抱歉,SQL Server 并没有让启用 XA 事务变得简单……无论出于什么原因,您都必须在各处勾选框上跳来跳去才能使其正常工作。
关于sql-server - 在哪里可以找到 sqljdbc_xa.dll 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37292663/