У нас есть некоторый код для идентификации экземпляров 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
//
}
}
Это выполняется для двух значений 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"
Каким образом запрос по указанному пути WMI экземпляров SQL Server возвращает экземпляры сервера отчетов, (которые, как я ожидаю, )будут жить по другому пути?
Это правильный путь для запроса?