【发布时间】:2016-08-14 23:49:58
【问题描述】:
我创建了一个 Windows 服务来监视接收位置和发送端口事件,即使用 WMI ManagementScope 类范围为本地 BizTalk 服务器计算机启动/停止/启用/禁用/登记/取消登记:
string strScope = @"\\.\root\MicrosoftBizTalkServer";
但是当我尝试指向远程机器/服务器以使用以下方式捕获事件时:
string strScope = string.Format(@"\\{0}\root\MicrosoftBizTalkServer", node.Address);
我收到一个奇怪的 WMI 错误。我试图指向的典型远程机器是一个类似的 Windows 服务器,有一个小区别,它的 BizTalk 服务器指向位于网络中另一台服务器上的 SQL 服务器。
经过大量谷歌搜索和搜索后,我发现可能导致失败的原因是经典的“双跳”问题,当我们尝试访问远程 BizTalk 服务器时,其 SQL 服务器位于另一台计算机上。
在 Visual Studio 中,我没有获得足够的错误信息,因此我尝试使用 Windows 内置工具“wbemtest.exe”来解决正在发生的事情,结果却发现了一条长长的错误消息,例如:
BizTalk Server 无法访问 SQL Server。这可能是由于以下原因之一: \n1.当前用户的访问权限已被拒绝。以已被授予 SQL 权限的用户身份登录并重试,或者授予当前用户访问 SQL Server 的权限。 \n2。 SQL Server 不存在或指定了无效的数据库名称。检查为 SQL Server 和数据库输入的名称,确保它们与 SQL Server 安装期间提供的名称一致。 \n3. SQL Server 存在,但当前未运行。使用 Windows 服务控制管理器或 SQL 企业管理器启动 SQL Server,然后重试。 \n4. Microsoft SQL Server 数据文件夹中已存在与指定数据库同名的 SQL 数据库文件。 \n \n来自 OLEDB 提供程序的内部错误:\"用户 'NT AUTHORITY\ANONYMOUS LOGON' 登录失败。\""
我尝试在管理服务 -> 组件服务下使用防火墙和 DCOM 设置,但没有任何设置可以让我通过“模拟”传递我的用户凭据并取回接收位置/发送端口信息。
请分享实际解决此问题的解决方法/解决方案/配置设置。
【问题讨论】:
标签: c# sql-server wmi biztalk