繁体   English   中英

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

[英].Net - Remote BizTalk server monitoring using WMI when the SQL server is located on another VM

我创建了一个Windows服务来监视接收位置和发送端口事件,即使用WMI ManagementScope类作用域为本地BizTalk服务器计算机启动/停止/启用/禁用/登记/取消登记:

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

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

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

我收到奇怪的WMI错误。 我要指向的典型远程计算机是类似的Windows服务器,但有一个小区别,即BizTalk服务器指向位于网络中另一台服务器上的SQL服务器。

经过大量的搜索和搜索之后,我发现信息提示可能的失败原因是经典的“双跳”问题,当我们在其SQL Server所在的另一台计算机上尝试访问远程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”设置,但没有设置对我有效,无法通过“模拟”传递用户的凭据并检索回接收位置/发送端口信息。

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

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

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

将DCOM权限授予WMI的服务帐户,并设置DTC(分布式事务处理协调器)权限。

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

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

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

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

请参阅此链接以获取解决方案类似问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM