【发布时间】: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