我们有一些用于识别SQL Server实例及其相关的Reporting Server实例的代码,但返回的结果与预期不符。
某台机器上有两个实例:
使用WMI,我们可以识别SQL Server实例,并且这部分工作正常。对于每个实例,我们按照以下方式查询RS实例:
某台机器上有两个实例:
SQL Express (2008) - (local)/SQLEXPRESS
和(local)/EXPRESS_BOB
,每个实例都有自己的Reporting Server。使用WMI,我们可以识别SQL Server实例,并且这部分工作正常。对于每个实例,我们按照以下方式查询RS实例:
public void QueryServers(string wmiPath)
{
using (
var searcher = new ManagementObjectSearcher(
wmiPath,
"Select * from MSReportServer_ConfigurationSetting"))
{
ManagementObjectCollection moc = searcher.Get();
//
// Process objects in moc
//
}
}
以下是针对两个不同的 wmiPath
值的运行结果(注意 - 需要以管理员身份运行):
- wmiPath = "root\Microsoft\SqlServer\ReportServer\RS_SQLEXPRESS\v10\Admin"
- wmiPath = "root\Microsoft\SqlServer\ReportServer\RS_EXPRESS_5fBOB\v10\Admin"
无论 wmiPath
的值为何,moc
集合始终包含 两个 值:
- moc[0] ["InstanceName"] = "SQLEXPRESS"
- moc[1] ["InstanceName"] = "EXPRESS_BOB"
查询指定 SQL Server 实例的 WMI 路径下的内容,为什么返回的 Report Server 实例(我期望它们)在不同的路径下呢?
这是否是正确的查询路径?