【问题标题】:MSDTC from a standalone machine to a domain machineMSDTC 从独立机器到域机器
【发布时间】:2013-04-20 15:38:07
【问题描述】:

问题是我们在使用 TransactionScope 的独立网络服务器(Windows 2003 SP2 - 机器名称是 TESTAPP 可以在下面的日志中找到)上有一个网站。

SQL Server 2008 R2 机器 (Windows Server 2008) 在域内。

当独立机器命中 TransactionScope 时,它​​会失败(随后会出现错误详细信息)。

当我从与数据库服务器在同一域中的机器上运行代码时,它工作正常。

在独立机器上,我得到普遍存在的错误:

Error HRESULT E_FAIL has been returned from a call to a COM component.

但是,MSDTC 设置正确,顺便说一下,它使用网络服务。 DTCPing.exe 两种方式都可以正常工作。

在深入研究数据库机器后,我发现了以下审计失败:

帐户登录失败。

Subject:
Security ID:        NULL SID
Account Name:       -
Account Domain:     -
Logon ID:       0x0

Logon Type:         3

Account For Which Logon Failed:
Security ID:        NULL SID
Account Name:       TESTAPP$
Account Domain:     WORKGROUP

Failure Information:
Failure Reason:     Unknown user name or bad password.
Status:         0xc000006d
Sub Status:     0xc0000064

Network Information:
Workstation Name:   TESTAPP
Source Network Address: 192.168.**.**
Source Port:        1202

独立机器正在尝试使用它自己的机器名称登录到 SQL Server 机器,天知道它使用什么作为密码。

因此,是否可以让 MSDTC 从独立机器工作到域机器?

附:如果可能(如果有其他方法)我不想影响 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\TurnOffRpcSecurity' 注册表项。

附言如果可能的话,我想在 MSDTC 上保持相互身份验证,(我知道可能的解决方案是将 MSDTC 设置为不需要身份验证,但不确定这是否完全必要)

关于它的奇怪之处在于使用测试独立 Web 服务器到域 DB 服务器 MSDTC 无论设置为无身份验证还是相互身份验证都可以正常工作! :S

附言两台机器上的防火墙均已关闭。

【问题讨论】:

    标签: c# security cross-domain transactionscope msdtc


    【解决方案1】:

    啊,要是我早先尝试使用实时系统的副本等设置测试就好了……

    当我关闭相互身份验证并将其设置为无身份验证时,它就像一个魅力。

    附:在不向外界开放 MSDTC 机器/端口的环境中,无身份验证并不是一个安全漏洞。见potential risks of using unsecure rpc no authentication required setting in msdtc security configuration

    【讨论】:

      【解决方案2】:

      您可以跨数据访问方法仅使用一个连接对象。这样就永远不会触发 MSDTC。我有类似的经历,但无权调整 SQL 服务器。使用单例模式,我创建了数据连接,并在一个事务中跨多个方法调用使用相同的连接对象。

      【讨论】:

      • 确实,我使用一个连接并将其传递给多种方法,但是当访问多个数据库实例 dtc 时,请参阅stackoverflow.com/questions/1690892/… 以获得一些有趣的见解,P.S.始终使用 SQL 2000 dtc:S
      • 另请参阅上面链接中的更新1部分,根据MS跨越域边界将导致DTC启动。
      • 谢谢保罗,我从来不知道。我一直试图将我的所有需求都保存在一个数据库中。所有外部数据库内容都通过(web/WCF)服务访问和更新。所以我从来没有遇到过那个。
      猜你喜欢
      • 2013-04-24
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-20
      相关资源
      最近更新 更多