予期しない結果を返すSQLServerインスタンスとそれに関連するReportingServerインスタンスを識別するためのコードがいくつかあります。
マシンにはとの2つのインスタンスが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の2つの値に対して実行されます(注-管理者として実行が必要です)。
- wmiPath = "root \ Microsoft \ SqlServer \ ReportServer \ RS_SQLEXPRESS \ v10 \ Admin"
- wmiPath = "root \ Microsoft \ SqlServer \ ReportServer \ RS_EXPRESS_5fBOB \ v10 \ Admin"
の値に関係なくwmiPath
、moc
コレクションは常に2つの値を保持します。
- moc [0] ["InstanceName"] = "SQLEXPRESS"
- moc [1] ["InstanceName"] = "EXPRESS_BOB"
指定されたSQLServerインスタンスのWMIパスでクエリを実行すると、別のパスで(私が期待している)レポートサーバーインスタンスが返されるのはどうしてですか?
これはクエリする正しいパスですか?