5

予期しない結果を返す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"

の値に関係なくwmiPathmocコレクションは常に2つの値を保持します。

  • moc [0] ["InstanceName"] = "SQLEXPRESS"
  • moc [1] ["InstanceName"] = "EXPRESS_BOB"

指定されたSQLServerインスタンスのWMIパスでクエリを実行すると、別のパスで(私が期待している)レポートサーバーインスタンスが返されるのはどうしてですか?

これはクエリする正しいパスですか?

4

1 に答える 1

3

仕様によるもののようです(http://msdn.microsoft.com/en-us/library/ms152836.aspxを参照)

"Where InstanceName='<instance name>'"クエリに追加すると役立つ場合があります

于 2012-08-07T05:44:25.513 に答える