【问题标题】:.Net - Remote BizTalk server monitoring using WMI when the SQL server is located on another VM.Net - 当 SQL 服务器位于另一个 VM 上时,使用 WMI 监视远程 BizTalk 服务器
【发布时间】: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


    【解决方案1】:

    经过大量研究和深入研究,解决方案是通过为非域管理员启用/配置 Kerberos 身份验证来实现的。服务帐户用户和参与通信的机器,即客户端(发送基于 WMI 的请求的机器)、Biztalk 节点(响应基于 WMI 的请求的机器)和 SQL Server 节点(机器托管/运行 SQL Server 数据库引擎服务,最重要的是 Biztalk 的数据库,其中包括消息框、跟踪、管理和 SSO)。

    这一切都是在单个域下完成的,并且为 Biztalk 节点和 SQL Server 节点以及使用的服务帐户设置了委派。

    已为 WMI 服务帐户授予 DCOM 权限,并设置了 DTC(分布式事务协调器)权限。

    生成了适当的 SPN,并为在委派模式下发起 WMI 请求的服务帐户授予了适当的 SQL Server 权限。

    使用以下 SQL 查询验证是否为特定服务帐户启用了 Kerberos:

    从 sys.dm_exec_connections 中选择 session_id、net_transport、client_net_address、auth_scheme

    【讨论】:

      【解决方案2】:

      这只是一个双跳问题,您面临的问题是因为您正试图运行服务并访问远程服务器 BizTalk 服务器,然后该服务器正试图登录到远程 SQL 服务器。您的凭据只能到达 BizTalk 服务器,但 BizTalk 服务器不会将您的凭据传递给另一台服务器。

      解决方法参考此链接 Similar Issue

      【讨论】:

      • 我已经浏览了提供的链接,但无济于事。答案中提供的所有 3 个选项均不适用于我的场景,因为已经为我们域中的用户配置了访问 Biztalk 服务器的所有权限,ExplorerOM Api 不允许监视事件,而是允许添加/更新/删除等操作Biztalk 工件。
      • 您是否尝试过从您尝试获取其信息的 BizTalk 服务器运行 Windows 服务?
      • 是的,我们试过了,它成功了,但设计是使用单个应用程序服务器托管我们的监控服务来从网络中的其他机器捕获 Biztalk 事件。
      • 您可以使用同一个 BizTalk 组中的单个应用程序服务器来托管您的服务,或者使用您在 BizTalk 服务器上远程运行的 powershell,而无需从一个应用程序服务器在 BizTalk 服务器上安装任何东西,否则您正在谈论信任服务器和凭据委托设置,这将在活动目录域级别完成。这与 BizTalk 无关,它与域中的 Windows 服务器如何使用 Kerberos 身份验证进行通信。
      猜你喜欢
      • 2011-06-08
      • 1970-01-01
      • 2014-11-18
      • 1970-01-01
      • 2014-10-06
      • 2019-02-12
      • 1970-01-01
      • 2017-03-29
      • 2023-03-06
      相关资源
      最近更新 更多