Reporting Services-WMI-Anbieter

Der Reporting Services-WMI-Anbieter baut auf der Standardtechnologie einer Windows Management Instrumentation (WMI) auf, mit der Sie auf Steuerungs- und Verwaltungsdaten in einer Unternehmensumgebung zugreifen können. Der WMI-Anbieter für Reporting Services fungiert als Instanzanbieter, bei dem die Berichtsserver-XML-Konfigurationselemente einer Reihe von Klassen zugeordnet werden, die Methoden enthalten, die Sie aufrufen können, um Berichtsserver-Konfigurationsdaten hinzuzufügen, zu entfernen oder zu ändern. Weitere Informationen zu den Klassen finden Sie unter Reporting Services-WMI-Anbieterbibliothek.

Übersicht über WMI-Anbieter

WMI-Klassen in Reporting Services ermöglichen die Steuerung der Berichtsserver- und Berichts-Manager-Komponenten auf lokalen und Remotecomputern. Damit kann festgestellt werden, welche Maschinen im Netzwerk auf einem Berichtsserver-Webdienst ausgeführt werden. Außerdem können Sie damit eine Berichtsserverinstanz in eine Bereitstellung für horizontales Skalieren aktivieren. System- und Datenbankadministratoren können anhand dieser Klassen nach der Installation Änderungen an den Konfigurationen im Berichtsserver und Berichts-Manager vornehmen, oder sie können Aufgaben der Serveradministration lokal oder im Remotemodus durchführen. Zu diesen Aufgaben gehören: die Änderung der Anmeldeinformationen für die Datenbankverbindung zwischen dem Berichtsserver und der Berichtsserver-Datenbank, die Änderung des Namens der Berichtsserver-Datenbank und die Änderung der URL, die den Installationspfad zur Berichtsserverinstanz oder zum Berichts-Manager definiert.

Die zur Unterstützung dieser Funktionen installierten Klassen lauten folgendermaßen:

  • MSReportServer_Instance-Klasse stellt grundlegende Informationen bereit, die ein Client benötigt, um eine Verbindung mit einem installierten Berichtsserver herzustellen.

  • MSReportServer_ConfigurationSetting-Klasse stellt die Installations- und die Laufzeitparameter einer Berichtsserverinstanz dar. Diese Parameter werden in der Konfigurationsdatei RSReportServer.config für den Berichtsserver gespeichert.

Der Namespace, mit dem die Informationen zu Reporting Services in den in diesem Thema gezeigten Codebeispielen abgerufen werden, ist der System.Management-Namespace, der in Microsoft .NET Framework gefunden wurde. Der System.Management-Namespace enthält eine Reihe verwalteter Codeklassen, über die .NET Framework-Anwendungen auf Verwaltungsdaten zugreifen und diese bearbeiten können. Weitere Informationen zur Verwendung der Reporting Services-WMI-Klassen mit dem System.Management-Namespace finden Sie unter "Zugriff auf Verwaltungsinformationen mit System.Management" im Microsoft .NET Framework-SDK.

Suchen einer Berichtsserverinstanz

Wenn auf dem Computer mehrere Instanzen eines Berichtsservers installiert sind, muss der Administrator genau zu der Instanz auf dem Computer zeigen, deren Eigenschaften geändert werden sollen. Um die Instanz direkt zu suchen, enthält jede Klasse eine Eigenschaft, die als Schlüssel definiert wird. Diese Schlüsseleigenschaft identifiziert eine Berichtsserverinstallation eindeutig. Die als Schlüssel definierte Eigenschaft ist die PathName-Eigenschaft. Der Wert dieser Eigenschaft ist der Pfad zur Konfigurationsdatei RSReportServer.config, einschließlich des Namens der Konfigurationsdatei. Bei den meisten Installationen entspricht dieser Pfad dem folgenden Beispiel:

C:\Program Files\Microsoft SQL Server\MSRS10_50.<InstanceName>\Reporting Services\ReportServer\rsreportserver.config
HinweisHinweis

Sonderzeichen im Instanznamen Der Unterstrich (_) im Instanznamen wird in der PathName-Eigenschaft in "_5f" umgewandelt. Beispiel:

  • Instanzname = My_Instance

  • PathName-Eigenschaft = My_5fInstance

Nach Erstellung der MSReportServer_ConfigurationSetting-Klasse können Sie Werte für den Schlüssel eingeben und den Computer nach einer Instanz des Berichtsservers oder des Berichts-Managers durchsuchen, die mit dem Schlüssel übereinstimmt. Wenn diese gefunden wird, geben Sie die restlichen Werte aus dieser Instanz in die Verwaltungsauflistung ein.

Sie können Informationen auch erhalten, indem Werte in eine Auflistung eingegeben werden und die Verwaltungsklasse zum Anzeigen der Informationen immer wieder durchlaufen wird. Wenn Sie diesen Code von Visual Studio .NET ausführen, fügen Sie System.Management einen Projektverweis hinzu. Im Beispiel unten wird davon ausgegangen, dass sich die Konfigurationsdatei RSReportServer.config in C:\Programme\Microsoft SQL Server\MSRS10_50.<InstanceName>\Reporting Services\ReportServer\bin befindet. Die Beschreibungen für die Methoden in der System.Management-Klasse finden Sie im Microsoft Visual Studio .NET-SDK.

Die bevorzugte Art der Suche nach Informationen auf Ihren Berichtsserverinstallationen besteht im Durchlaufen der WMI-Instanzenauflistung. Im nachstehenden Beispiel sehen Sie, wie Eigenschaften auf jeder Berichtsserverinstanz gesucht werden: Es wird eine Auflistung erstellt, die zum Anzeigen der Eigenschaften immer wieder durchlaufen wird.

Imports System
Imports System.Management
Imports System.IO

Module Module1
    Sub Main()
        Const WmiNamespace As String = "\\<ServerName>\root\Microsoft\SqlServer\ReportServer\<InstanceName>\v10\Admin"
        Const WmiRSClass As String = _
           "\\<ServerName>\root\Microsoft\SqlServer\ReportServer\<InstanceName>\v10\admin:MSReportServer_ConfigurationSetting"

        Dim serverClass As ManagementClass
        Dim scope As ManagementScope
        scope = New ManagementScope(WmiNamespace)
        'Connect to the Reporting Services namespace.
        scope.Connect()

        'Create the server class.
        serverClass = New ManagementClass(WmiRSClass)
        'Connect to the management object.
        serverClass.Get()
        If serverClass Is Nothing Then Throw New Exception("No class found")

        'Loop through the instances of the server class.
        Dim instances As ManagementObjectCollection = serverClass.GetInstances()
        Dim instance As ManagementObject
        For Each instance In instances
            Console.Out.WriteLine("Instance Detected")
            Dim instProps As PropertyDataCollection = instance.Properties
            Dim prop As PropertyData
            For Each prop In instProps
                Dim name As String = prop.Name
                Dim val As Object = prop.Value
                Console.Out.Write("Property Name: " + name)
                If val Is Nothing Then
                    Console.Out.WriteLine("     Value: <null>")
                Else
                    Console.Out.WriteLine("     Value: " + val.ToString())
                End If
            Next
        Next

        Console.WriteLine("--- Press any key ---")
        Console.ReadKey()


    End Sub
End Module
using System;
using System.Management;
using System.IO;
[assembly: CLSCompliant(true)]

class Class1
{
    [STAThread]
    static void Main(string[] args)
    {
        const string WmiNamespace = @"\\<ServerName>\root\Microsoft\SqlServer\ReportServer\<InstanceName>\v10\Admin";
        const string WmiRSClass =
          @"\\<ServerName>\root\Microsoft\SqlServer\ReportServer\<InstanceName>\v10\admin:MSReportServer_ConfigurationSetting";
        ManagementClass serverClass;
        ManagementScope scope;
        scope = new ManagementScope(WmiNamespace);

        // Connect to the Reporting Services namespace.
        scope.Connect();
        // Create the server class.
        serverClass = new ManagementClass(WmiRSClass);
        // Connect to the management object.
        serverClass.Get();
        if (serverClass == null)
            throw new Exception("No class found");

        // Loop through the instances of the server class.
        ManagementObjectCollection instances = serverClass.GetInstances();

        foreach (ManagementObject instance in instances)
        {
            Console.Out.WriteLine("Instance Detected");
            PropertyDataCollection instProps = instance.Properties;
            foreach (PropertyData prop in instProps)
            {
                string name = prop.Name;
                object val = prop.Value;
                Console.Out.Write("Property Name: " + name);
                if (val != null)
                    Console.Out.WriteLine("     Value: " + val.ToString());
                else
                    Console.Out.WriteLine("     Value: <null>");
            }
        }
        Console.WriteLine("\n--- Press any key ---");
        Console.ReadKey();
    }
}

Weitere Informationen zu den Eigenschaften, die auf dem Berichtsserver und dem Berichts-Manager gelesen oder geändert werden können, finden Sie unter Reporting Services-WMI-Anbieterbibliothek. Weitere Informationen zu den Eigenschaften, die für den Berichtsserver spezifisch sind, finden Sie unter MSReportServer_ConfigurationSetting-Klasse. Informationen zur Standardinstallation der Konfigurationsdateien finden Sie unter Konfigurationsdateien (Reporting Services).