Поделиться через


Поставщик WMI для служб Reporting Services

Поставщик WMI служб Reporting Services построен на основе стандартной технологии инструментария управления Windows (WMI) для доступа к данным контроля и управления в рабочей среде. Поставщик WMI для служб Службы Reporting Services служит в качестве поставщика экземпляров, сопоставляя XML-элементы конфигурации набору классов, включающих методы, которые можно вызывать для добавления, удаления или изменения данных конфигурации сервера отчетов. Дополнительные сведения о классах см. в разделе Библиотека поставщиков WMI служб Reporting Services.

Общие сведения о поставщике WMI

Классы WMI включены в службы Службы Reporting Services, чтобы компонентами сервера отчетов и диспетчера отчетов можно было управлять на локальных и удаленных компьютерах с целью предоставления способа выяснить, на каких машинах в сети выполняется веб-служба сервера отчетов, а также для активации экземпляра сервера отчетов в масштабном развертывании. Системные администраторы и администраторы баз данных могут использовать эти классы для выполнения изменений в конфигурации сервера отчетов и диспетчера отчетов после завершения установки или для выполнения задач администрирования локального компьютера или удаленного сервера. Задачи включают изменение учетных данных соединения сервера отчетов с базой данных сервера отчетов, изменение имени базы данных сервера отчетов и изменение URL-адреса, который определяет путь установки для экземпляра сервера отчетов или диспетчера отчетов.

Классами, установленными для поддержки этих функций, являются следующие классы.

  • Класс Класс MSReportServer_Instance предоставляет клиенту основные сведения для соединения с установленным сервером отчетов.

  • Класс Класс MSReportServer_ConfigurationSetting представляет параметры установки и среды выполнения экземпляра сервера отчетов. Эти параметры хранятся в файле конфигурации RSReportServer.config для сервера отчетов.

Пространством имен, используемым для получения сведений о службах Службы Reporting Services в образцах кода, показанных в этом разделе, является пространство имен System.Management, которое находится на платформе Microsoft .NET Framework. Пространство имен System.Management предоставляет набор классов управляемого кода, благодаря которым приложения платформы .NET Framework могут иметь доступ к данным управления и обрабатывать эти данные. Дополнительные сведения об использовании WMI-классов служб Reporting Services, использующих пространство имен System.Management, см. в разделе «Доступ к данным управления при помощи пространства имен System.Managment» в описании пакетов Microsoft .NET Framework SDK.

Поиск экземпляра сервера отчетов

Если компьютер имеет несколько установленных экземпляров сервера отчетов, администратору нужно указать в компьютере конкретный экземпляр, свойства которого изменяются. Для непосредственного поиска экземпляра каждый класс содержит свойство, определенное как ключ. Это ключевое свойство однозначно определяет установку сервера отчетов. Свойством, определенным как ключ, является свойство PathName. Значением этого свойства является путь к файлу конфигурации RSReportServer.config, включающий имя файла конфигурации. Для большинства установок этот путь может выглядеть следующим образом:

C:\Program Files\Microsoft SQL Server\MSRS10_50.<InstanceName>\Reporting Services\ReportServer\rsreportserver.config
ПримечаниеПримечание

Специальные символы в имени экземпляра. Символ подчеркивания (_) в экземпляре имени преобразуется в последовательность «_5f» в свойстве PathName. Например:

  • Instance name = My_Instance

  • Свойство PathName = My_5fInstance

После создания класса MSReportServer_ConfigurationSetting можно произвести заполнение ключа и произвести поиск компьютер экземпляра сервера отчетов или диспетчера отчетов по этому ключу. После нахождения экземпляра заполните коллекцию управления остальными значениями из экземпляра.

Можно также получить данные, заполнив коллекцию и циклически считывая элементы класса управления для отображения данных. Если этот код выполняется из среды Visual Studio .NET, добавьте ссылку на проект в классе System.Management. В показанном ниже примере предполагается, что файл конфигурации RSReportServer.config находится в папке «C:\Program Files\Microsoft SQL Server\MSRS10_50.<InstanceName>\Reporting Services\ReportServer\bin». Описания методов в классе System.Management см. в пакете Microsoft Visual Studio .NET SDK.

Наиболее предпочтительным способом нахождения сведений об установках сервера отчетов является перечисление элементов коллекции экземпляра WMI. В указанном ниже примере показано, как искать свойства каждого экземпляра сервера отчетов, создав коллекцию и циклически считывая элементы коллекции для отображения свойств.

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

Дополнительные сведения о свойствах, которые можно считывать или изменять на сервере отчетов и диспетчере отчетов, см. в разделе Библиотека поставщиков WMI служб Reporting Services. Дополнительные сведения о свойствах сервера отчетов см. в разделе Класс MSReportServer_ConfigurationSetting. Сведения об используемой по умолчанию установке файлов конфигурации см. в разделе Файлы конфигурации (службы Reporting Services).