在SQL 2008/Server 2008 R2 x64 HRESULT上使用MSDTC事务的异常:0x8004D025

Spe*_*nce 6 msdtc transactions sql-server-2008 windows-server-2008-r2

我目前正在将应用程序升级到SQL 2008/Server 2008 R2 x64,我看到了一些我在SQL 2005/Server 2003上没有看到的奇怪行为.随机我从MSDTC得到一个例外:The partner transaction manager has disabled its support for remote/network transactions. (Exception from HRESULT: 0x8004D025).请注意,我已启用未经身份验证的网络事务,这些事务在95%的情况下都可以正常工作.但是有些人因为这个消息而失败了.如果这是相关的,它是一个SQLBulkCopy对象.

我已经调查了DTC统计数据,有趣的是当事务抛出此异常时没有中止事务,但它确实记录了一个已完成的事务.真正令人感兴趣的是远程事务管理器还创建了一个新事务(提交状态).作为事务的一部分,第二次写入成功写入数据库,但第一次写入不是.

在排序方面,当我看到此错误时,发生以下情况:

  1. 从表中删除(这是有效的)
  2. 新行中的Bulkcopy(此操作失败,并在"WriteToServer"方法上引发异常)
  3. 创建写入的记录(这是有效的).

我知道SQL和应用程序都已经为远程事务配置了MSDTC,因为几个事务确实成功运行.知道为什么会发生这种情况以及如何解决这个问题吗?

Mit*_*eat 8

在实践中没有亲自见过这个,但发现了这个:

这里:

  1. 确保选中"网络DTC访问","允许远程客户端","允许入站/出站","启用提示"(某些选项可能没有必要,请尝试获取配置)
  2. 该服务将重新启动
  3. 但如果它仍然不工作,你可能需要重新启动你的服务器

  • 真是一个惊喜.重新启动两台服务器,我无法在100次交易后重现...感谢我用我应该做的第一个方式打了我头.哦,至少对于下一个人来说,有一个关于HRESULT的问题. (2认同)