Fournisseur WMI de Reporting Services

Le fournisseur WMI de Reporting Services repose sur la technologie WMI (Windows Management Instrumentation) standard pour accéder aux informations de contrôle et de gestion dans un environnement d'entreprise. Le fournisseur WMI pour Reporting Services joue le rôle de fournisseur d'instances en mappant les éléments de configuration XML du serveur de rapports à un jeu de classes. Celui-ci comprend des méthodes que vous pouvez appeler pour ajouter, supprimer ou modifier des informations de configuration du serveur de rapports. Pour plus d'informations sur les classes, consultez Bibliothèque Fournisseur WMI de Reporting Services.

Vue d'ensemble du fournisseur WMI

Les classes WMI sont incluses dans Reporting Services pour permettre le contrôle du serveur de rapports et des composants du Gestionnaire de rapports sur des ordinateurs locaux et distants, pour offrir un moyen de découvrir les ordinateurs du réseau qui exécutent un service Web Report Server, et pour activer une instance de serveur de rapports dans un déploiement avec montée en puissance parallèle. Les administrateurs système et les administrateurs de base de données peuvent utiliser ces classes pour modifier les configurations du serveur de rapports et du Gestionnaire de rapports une fois l'installation terminée, ou pour effectuer des tâches d'administration du serveur locales ou distantes. Les tâches comprennent la modification des informations d'identification de connexion de base de données entre le serveur de rapports et la base de données du serveur de rapports, la modification du nom de la base de données du serveur de rapports, et la modification de l'URL qui définit le chemin d'installation à l'instance de serveur de rapports ou au Gestionnaire de rapports.

Les classes installées pour prendre en charge ces fonctions sont les suivantes :

  • La Classe MSReportServer_Instance fournit les informations de base nécessaires à un client pour établir la connexion à un serveur de rapports installé.

  • La Classe MSReportServer_ConfigurationSetting représente les paramètres d'installation et d'exécution d'une instance de serveur de rapports. Ces paramètres sont stockés dans le fichier de configuration RSReportServer.config pour le serveur de rapports.

L'espace de noms utilisé pour obtenir des informations sur Reporting Services dans les exemples de code contenus dans cette rubrique est System.Management (qui est issu du Microsoft .NET Framework). L'espace de noms System.Management fournit un jeu de classes de code managé par le biais desquelles les applications .NET Framework peuvent accéder à des informations de gestion et les manipuler. Pour plus d'informations sur l'utilisation des classes WMI de Reporting Services à l'aide de l'espace de noms System.Management, consultez « Accès aux informations de gestion avec System.Management » dans le Kit de développement logiciel (SDK) Microsoft .NET Framework.

Recherche d'une instance de serveur de rapports

Si plusieurs instances d'un serveur de rapports sont installées sur l'ordinateur, l'administrateur doit pointer vers l'instance exacte sur l'ordinateur dont les propriétés sont en cours de modification. Pour trouver directement l'instance, chaque classe contient une propriété définie en tant que clé qui identifie une installation du serveur de rapports de façon unique. La propriété définie en tant que clé est la propriété PathName. La valeur de cette propriété est le chemin d'accès au fichier de configuration RSReportServer.config, y compris le nom du fichier de configuration. Dans la plupart des installations, ce chemin d'accès est semblable au suivant :

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

Note

Caractères spéciaux dans le nom de l'instance Le trait de soulignement (_) dans le nom de l'instance est transformé en « _5f » dans la propriété PathName. Par Exemple :

  • Nom de l'instance = Mon_Instance

  • Propriété PathName = Mon_5fInstance

Après avoir créé la classe MSReportServer_ConfigurationSetting, vous pouvez remplir la clé et rechercher une instance du serveur de rapports ou du Gestionnaire de rapports qui correspond à cette clé sur l'ordinateur. Si la recherche est fructueuse, remplissez la collection de gestion avec le reste des valeurs de cette instance.

Vous pouvez également obtenir des informations en remplissant une collection et en effectuant une boucle dans la classe de gestion pour afficher les informations. Si vous exécutez ce code à partir de Visual Studio .NET, ajoutez une référence de projet à System.Management. L'exemple suivant suppose que le fichier de configuration RSReportServer.config se trouve à l'emplacement C:\Program Files\Microsoft SQL Server\MSRS10_50.<Nom de l'instance>\Reporting Services\ReportServer\bin. Les descriptions des méthodes de la classe System.Management sont disponibles dans le Kit de développement logiciel (SDK) Microsoft Visual Studio .NET.

La méthode privilégiée pour rechercher des informations sur vos installations du serveur de rapports consiste à énumérer la collection d'instances WMI. L'exemple suivant indique comment rechercher des propriétés sur chaque instance de serveur de rapports en créant une collection et en effectuant une boucle dans la collection pour afficher les propriétés.

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();
    }
}

Pour plus d'informations sur les propriétés qui peuvent être lues ou modifiées sur le serveur de rapports et le Gestionnaire de rapports, consultez Bibliothèque Fournisseur WMI de Reporting Services. Pour plus d'informations sur les propriétés spécifiques au serveur de rapports, consultez Classe MSReportServer_ConfigurationSetting. Pour plus d'informations sur l'installation par défaut des fichiers de configuration, consultez Fichiers de configuration (Reporting Services).