【问题标题】:Windows 7 - Enable Network DTC AccessWindows 7 - 启用网络 DTC 访问
【发布时间】:2011-02-20 21:03:32
【问题描述】:

我有一个 Visual Studio 2010 Windows 窗体应用程序,我在其中使用 TransactionScope 类启动事务。然后我从 Sql Server Broker Services 消息队列接收消息,它工作正常。接下来,我尝试通过调用我的数据访问层(即 Visual Studio 数据集(xsd 文件))从同一数据库调用存储过程。当我对数据库进行第二次调用时,我收到以下错误消息:

由于通信问题,MSDTC 事务管理器无法从源事务管理器中提取事务。可能的原因是:存在防火墙并且它对 MSDTC 进程没有异常,两台机器无法通过它们的 NetBIOS 名称找到彼此,或者两个事务管理器之一未启用对网络事务的支持。 (HRESULT 异常:0x8004D02B)。

我在网上看到了几篇关于通过 dcomcnfg.exe 启用 DTC 访问以及允许 DTC 通过 Windows 防火墙进行通信的帖子。我已经做了这些事情,但仍然遇到这个问题。我知道我们的远程数据库服务器设置为启用 DTC 访问,因为我们在 Windows XP 和 Vista 上使用 Visual Studio 2008 构建的其他项目中使用了类似的事务。我认为 Windows 7 和 Visual Studio 2010 有一些特定的东西导致了这个问题,但一直无法找出它是什么。任何人都可以帮助解决这个问题吗?

我刚刚在网上看到另一位遇到此问题的程序员 (http://www.pcreview.co.uk/forums/thread-3977150.php) 的帖子,他说它在 Windows 7 - x86 上运行良好,但在 Windows 7 - x64 上出现此错误。我正在运行 Windows 7 的 x64 版本,有人知道 Windows 7 - 64 位版本上的 MSDTC 是否有问题?

【问题讨论】:

    标签: windows visual-studio-2010 windows-7 msdtc


    【解决方案1】:

    事实证明,我在对 SQL Server 服务代理的 Receive 调用中打开了一个数据库连接,然后尝试与我的数据访问层建立新连接。这是导致问题的原因,解决方法是在打开第二个连接之前关闭第一个连接。

    【讨论】:

    • 一个开放的 SQL 连接也对我造成了这个问题。
    猜你喜欢
    • 2014-07-10
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多