javax.transaction.xa.XAException: java.sql.SQLException: 无法创建 XA 控制连接。错误: 未能找到存储过程 'master..xp_sqljd...

配置JTA SQL Server XADataSource参考:https://msdn.microsoft.com/zh-cn/library/aa342335.aspx

使用 JDBC 驱动程序 :https://msdn.microsoft.com/zh-cn/library/ms378526(v=sql.110).aspx

JDBC下载地址:http://www.microsoft.com/zh-CN/download/details.aspx?id=11774

  1. sqljdbc_4.0\chs\auth\x86(x64|IA64)\sqljdbc_auth.dll放入WINDOWS\system32中
  2. sqljdbc_4.0\chs\xa\x86(x64|IA64)\sqljdbc_xa.dll放入Microsoft SQLServer\MSSQL\Binn\sqljdbc_xa.dll
  3. 执行xa_install.sql

如果要同时使用 XA 数据源和 Microsoft 分布式事务处理协调器 (MS DTC)来处理分布式事务,则需要执行以下步骤

(1)在 Windows XP 和 Windows Server 2003 上:

  1. 在“控制面板”中,打开“管理工具”,然后打开“组件服务”。也可以单击“开始”按钮,单击“运行”,在“打开”框中键入dcomcnfg,然后按“确定”打开“组件服务”。
  2. 展开“组件服务”、“计算机”,右键单击“我的电脑”,然后选择“属性”。
  3. 单击“MSDTC”选项卡,再单击“安全性配置”。
  4. 选中“启用 XA 事务”复选框,然后单击“确定”。这将使 MS DTC 服务重新启动。
  5. 再次单击“确定”以关闭“属性”对话框,然后关闭“组件服务”。
  6. 停止 SQL Server,然后重新启动,以确保它与 MS DTC 更改同步。

(2)在Win8或Server 2008上:

  1. 在“控制面板”中,打开“管理工具”,然后打开“组件服务”。也可以单击“开始”按钮,单击“运行”,在“打开”框中键入dcomcnfg,然后按“确定”打开“组件服务”。
  2. 展开“组件服务”“计算机”"Distribute Transaction Coordinator",右键单击“本地DTC”,然后选择“属性”。
  3. 单击“安全”选项卡,再单击“启用XA事务”。
  4. 然后单击“确定”。这将使 MS DTC 服务重新启动。
  5. 再次单击“确定”以关闭“属性”对话框,然后关闭“组件服务”。
  6. 停止 SQL Server,然后重新启动,以确保它与 MS DTC 更改同步。

注:在这些配置完成以后如果还出现:

错误:atomikos:error in recovery。

  1. 驱动程序有问题。即sqljdbc4.jar。我之前遇到这种问题后就重新在Miscrosoft官网上下载了“sqljdbc_3.0.1301.101_chs.exe";解压后,所有的配置都用该解压包中的文件。包括(sqljdbc_xa.dll)
  2. SQL Server 2000用的是x86(即32)位的文件来配置。因为通过查询分析器输入"select @@version"来查看SQL的版本后就会发现,即使操作系统是Server 2003 X64位,但SQL Server 2000仍然是32位的。
  3. 在WIn8上面输入“select @@version”后得到版本号“Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Apr 2 2010 15:48:46 Copyright (c) Microsoft Corporation Developer Edition (64-bit) on Windows NT 6.2 (Build 9200: ) ”,由此可看出SQL Server是X64的。
  4. SQL Server 2000在配置JTA XADataSource时,如果用sqljdbc.jar包,里面是没有com.microsoft.sqlserver.jdbc.SQLServerXADataSource该类的。因此SQL Server 2000也用sqljdbc4.jar该包来配置。

--EOF--

No.304

写于2015-02-03

转载于:https://www.cnblogs.com/hduwbf/p/6201963.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误信息表明在执行 PREPARE 函数时出现了问题,状态码为 -4。根据错误信息中提供的更多细节,可以看到涉及到 SQLJDBC_XA 和 DTC_ERROR。 一种可能的原因是分布式事务管理器(DTC)与数据库之间的通信出现了问题。这可能是由于以下原因之一引起的: 1. 数据库连接问题:请确保数据库服务器正常运行,并且您的应用程序能够正确连接数据库。检查数据库服务器的日志以获取更多关于连接问题的信息。 2. 分布式事务配置问题:检查您的分布式事务配置是否正确。确保正确配置了数据库和事务管理器之间的通信机制,例如 XA 驱动程序、XA 数据源等。 3. DTC 配置问题:检查您的 DTC 配置是否正确。确保 DTC 正确地配置为与数据库服务器进行通信,并且设置了适当的事务超时和重试机制。 4. 并发冲突:如果多个事务对同一资源进行并发操作,并且存在冲突或竞争条件,可能会导致 PREPARE 函数失败。请检查事务之间的并发访问情况,并确保代码逻辑正确处理并发访问的情况。 请根据错误信息中提供的更多细节,逐一排查以上可能的问题,并进行相应的调整和优化。如果问题仍然存在,您可能需要查看更详细的错误日志或调试信息,以获取更多关于 PREPARE 函数失败的信息。 希望这些信息能帮助到您!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值