首页 文章

.Net - 当SQL Server位于另一个VM上时使用WMI进行远程BizTalk服务器监视

提问于
浏览
0

我创建了一个Windows服务来监视接收位置并使用WMI ManagementScope类范围发送端口事件,即启动/停止/启用/禁用/登记/未列出本地BizTalk服务器计算机:

string strScope = @"\\.\root\MicrosoftBizTalkServer";

但是,当我尝试指向远程机器/服务器以使用以下方法捕获事件时:

string strScope = string.Format(@"\\{0}\root\MicrosoftBizTalkServer", node.Address);

我收到奇怪的WMI错误 . 我试图指出的典型远程机器是一个类似的Windows服务器,其中一个很小的区别是它的BizTalk服务器指向位于网络中另一台服务器上的SQL服务器 .

经过大量的谷歌搜索和搜索,我发现信息指出可能的失败原因是当我们尝试在其SQL服务器在另一台机器上时访问远程BizTalk服务器时出现的经典“双跳”问题 .

在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设置,但没有任何设置可以通过“模拟”传递我的用户凭据并检索回接收位置/发送端口信息 .

请分享实际解决此问题的变通方法/解决方案/配置设置 .

2 回答

  • 1

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

    请参阅此链接以获取解决方案Similar Issue

  • 0

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

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

    为服务帐户授予了DCOM权限,以便设置WMI和DTC(分布式事务处理协调器)权限 .

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

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

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

相关问题