【问题标题】:Exception using MSDTC Transactions on SQL 2008 / Server 2008 R2 x64 HRESULT: 0x8004D025在 SQL 2008/Server 2008 R2 x64 HRESULT 上使用 MSDTC 事务时出现异常:0x8004D025
【发布时间】:2011-04-04 04:25:39
【问题描述】:

我目前正在将应用程序升级到 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. 在新行中批量复制(此操作失败并且在“WriteToServer”方法上引发异常)
  3. 创建写入发生的记录(这有效)。

我知道 SQL 和应用程序都为远程事务配置了它们的 MSDTC,因为其中一些事务确实可以成功运行。知道为什么会发生这种情况以及如何解决吗?

【问题讨论】:

    标签: sql-server-2008 transactions windows-server-2008-r2 msdtc


    【解决方案1】:

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

    来自here

    1. 确保选中“网络 DTC 访问”、“允许远程客户端”、 “允许入站/出站”、“启用 TIP” (某些选项可能不是必需的, 尝试获取您的配置)
    2. 服务将重新启动
    3. 但如果仍然无法正常工作,您可能需要重新启动服务器

    【讨论】:

    • 真是个惊喜。重新启动两台服务器,我无法在 100 次交易后重现……感谢您用我一开始就应该做的事情打了我一巴掌。哦,至少有一个关于 HRESULT 的问题供下一个人使用。
    猜你喜欢
    • 1970-01-01
    • 2011-09-30
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 2014-01-11
    相关资源
    最近更新 更多