无论父sql server路径如何,报告服务实例的WMI查询都会返回所有实例

Nei*_*oss 5 c# wmi reporting-services ssrs-2008

我们有一些代码来识别SQL Server实例及其关联的Reporting Server实例,这些实例会返回意外结果.

一机的两个实例SQL Express (2008) - (local)/SQLEXPRESS(local)/EXPRESS_BOB-每个都有自己的报告服务器.

使用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
        //
    }
}
Run Code Online (Sandbox Code Playgroud)

这是针对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实例?

这是查询的正确途径吗?

use*_*107 3

它似乎是设计使然(请参阅http://msdn.microsoft.com/en-us/library/ms152836.aspx

添加"Where InstanceName='<instance name>'"到查询可能会有所帮助