Windows 7 - 启用网络DTC访问

时间:2010-05-18 12:20:50

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

我有一个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的MSDTC是否存在问题 - 64位版本?

1 个答案:

答案 0 :(得分:1)

事实证明,我在对SQL Server Service Broker的Receive调用中打开了数据库连接,然后尝试与我的数据访问层建立新连接。这导致了问题,修复结果是在打开第二个连接之前关闭第一个连接。