Знакомимся со службой построения отчетов

Служба составления отчетов SQL Server 2000, выпущенная в январе 2004 года, вероятно, стала одним из самых широко используемых компонентов. Почти всем организациям приходится создавать отчеты на основе данных, и с помощью Reporting Services компания Microsoft заполнила этот пробел в инструментарии SQL Server. Установить Reporting Services можно на любой компьютер с SQL Server 2000, причем не за дополнительную плату, а как часть SQL Server 2005.

Несмотря на все преимущества решения и шумиху вокруг его первой версии, многие специалисты по SQL Server отключали Reporting Services. Некоторые не использовали Reporting Services из-за обстоятельств, которые требуют отдельной установки экземпляра SQL Server или, возможно, из-за целого перечня необходимых условий для работы этих служб. Однако сейчас Reporting Services уже не новинка, и компания Microsoft выпустила Reporting Services Service Pack 1 (SP1), который устраняет ошибки в их начальной версии. И вот теперь компания Microsoft объединила Reporting Services с SQL Server 2005. Таким образом, понимание того, как применять Reporting Services, теперь обеспечит существенное преимущество пользователям SQL Server 2005. В этой статье даются базовые знания для начала работы с Reporting Services и приводятся примеры, которые можно воспроизвести в своих условиях тестирования. Я начну с перечисления необходимых условий для использования Reporting Services и объяснения, как работать с ними. Затем мы пройдемся по шагам авторской разработки двух отчетов и развертывания этих отчетов на сервере отчетов, основном компоненте Reporting Services. И в завершение я представлю два способа просмотра развернутых отчетов.

Установка Reporting Services

Чтобы правильно установить Reporting Services, нам нужны четыре элемента. Первое: потребуется Windows Server 2003, или Windows XP, или Windows 2000 с самыми последними пакетами обновлений. Второе: необходим Microsoft IIS, так как Reporting Services запускаются как Web-службы XML. Третье: требуется SQL Server 2000 или 2005 в редакции Standard, Enterprise или Developer (Reporting Services несовместимы с более ранними версиями SQL Server). Четвертое: разработчикам отчетов требуется среда Visual Studio.NET 2003 или 2005, которая управляет компонентом Reporting Services Report Designer. Администраторов, которые не разрабатывают отчеты, Reporting Services обеспечивают различными пользовательскими интерфейсами, что позволяет создавать каталоги, источники данных, учетные записи пользователей и предоставлять пользователям права.

После того как вы убедитесь, что система отвечает всем предварительным условиям, можно приступать к установке Reporting Services.

Создание первого отчета

Только Report Designer Microsoft предоставляет возможность авторской разработки отчетов в Reporting Services в среде Visual Studio.NET. Когда устанавливаются Reporting Services, в процессе установки Visual Studio.NET автоматически модернизируется путем добавления нового типа проекта Business Intelligence Projects. Иметь установленную на том же сервере с Reporting Services среду Visual Studio.NET не обязательно. Можно обратиться по URL сервера, где будут запущены Reporting Services, которые могут находиться не в том же месте, что и рабочая станция, используемая для запуска Visual Studio.NET. В этом типе проекта предусмотрено два шаблона, Report Project Wizard и Report Project. Оба шаблона позволяют выполнить шаги для создания отчета: определение источника данных для отчета, составление плана отчета, предварительный просмотр и развертывание готового отчета на сервере отчетов.

Для создания первого отчета нужно запустить новый проект в среде Visual Studio.NET и выбрать шаблон Report Wizard Project. Назовите проект SSMRS-Intro, прочитайте приветственный экран мастера, затем нажмите Next, чтобы попасть в окно Select the Data Source и установить источник данных отчета. Далее следует щелкнуть на Edit, чтобы открыть привычное диалоговое окно Data Link Properties, показанное на экране 1. В диалоговом окне Provider из таблицы нужно выбрать Microsoft OLE DB Provider для SQL Server в качестве типа данных, к которым требуется подключиться. Как показано на экране 1, закладка диалогового окна Connections позволяет установить для локального экземпляра SQL Server соединение типа Windows NT Integrated с базой данных Northwind. Щелкнем на Test Connection, а затем OK для возврата в окно Select the Data Source, которое теперь показывает строку соединения, указывающую на источник данных, названный по имени базы данных. Пока не помечен флажок Make this a shred source внизу экрана, мастер считает, что источник данных можно применять только к одному этому отчету.

Экран 1. Диалоговое окно Data Link Propeties

Щелчком на кнопке Next открывается окно мастера Design the Query. Можно либо набрать предложение SQL-запроса в текстовой строке Query string, либо щелкнуть на Edit, чтобы открыть графический разработчик запроса, подобный составителю запросов в Enterprise Manager. Для этого примера можно использовать следующий запрос.

SELECT CompanyName, ContactName, Phone, Country
FROM Customers
WHERE (Country = ?Canada?) OR
(Country = ?Mexico?) OR
(Country = ?USA?)

Затем нужно щелкнуть на Next, чтобы открыть окно Select the Report Type. Мастер предлагает два типа отчетов: табличный и матричный. Матричный тип — для отчетов с перекрестными ссылками, подобный мы будем создавать в примерах этой статьи. В данном случае для демонстрации выбирается табличный, Tabular.

Экран 2. Экран разметки таблицы в Report Wizard

На экране 2 показан следующий экран мастера, Design the Table, который позволяет определить поля, необходимые пользователю в запросе. Следует щелкнуть на Details, чтобы переместить названия полей из окна списка полей Available fields в окно списка Details. Этот выбор приводит к тому, что поля появляются в разделе Details отчета. По желанию можно создать дополнительные группировки по разделу Details, добавляя поля в окно списка Group. Следует щелкнуть на Next и открыть окно Choose the Table Style. Можно принять выбор по умолчанию Bold или указать другие стили отчета. Окно предварительного просмотра даст возможность увидеть, как форматируются данные в различных стилях.

Когда Report Wizard запускается в проекте первый раз, следующим появляется окно Choose the Deployment Location. Мастер автоматически заполняет текстовые окна Report Server и Deployment folder. Поскольку Report Server для примеров этой статьи работает на локальном Web-сервере IIS, в текстовом окне он указывает путь http://localhost/ReportServer. В процессе установки вводится имя Web-сервера, на котором размещены Reporting Services. По умолчанию мастер указывает имя каталога развертывания после имени проекта, в нашем случае это SSMRSIntro.

В последнем окне мастера отчету дается название по умолчанию и показывается сводка выбранных в предыдущих окнах элементов. Начальное имя отчета по умолчанию в проекте — Report1. Во время создания собственных отчетов можно изменить имя по умолчанию на более выразительное.

После закрытия мастера пользователь оказывается в режиме разработки отчетов среды Visual Studio.NET. Каждый отчет имеет три таблицы: одну для установки источника данных, другую для его схемы и третью — для предварительного просмотра того, как будут отображаться данные. На экране 3 представлена часть таблицы Preview для Report1, в которой показано, как будет выглядеть отчет после развертывания. Report1 создан для специфического источника данных, но служба составления отчетов позволяет задействовать параметры для изменения выходных данных в отчете.

Составление детализированного отчета

Для второго отчета лучше использовать общий источник данных взамен однократного, как это делалось при создании Report1. Общий источник данных удобен, так как можно повторно применять его в многочисленных отчетах. Начать следует со щелчка правой кнопкой на Shared Data Sources в Solution Explorer, как показано на экране 3 в правой панели, затем нужно выбрать Add New Data Source, чтобы открыть диалоговое окно Data Link Properties, как на экране 1. Воспользуемся диалоговым окном для установки Northwind в качестве источника данных, как мы это делали для Report1. Этот процесс добавляет элемент с именем Northwind.rds, расположенным внутри элемента Shared Data Sources в Solution Explorer.

Откроем мастер Report Wizard, выбрав из контекстного меню Reports в Solution Explorer пункт Add New Report. В пункте Select окна Data Source мастер автоматически выбирает Northwind как базу данных, обращаясь к источнику общих данных Northwind.rds. Если имеется более одного источника данных, можно открыть раскрывающийся список Shared Data Source и выбрать другой источник общих данных.

Для второго отчета следует ввести тот же самый запрос, что использовался для первого отчета, и выбрать табличный стиль. На экране Design the Table надо ввести Country в окне списка Group и добавить CompanyName, ContactName и Phone к списку Details. Поскольку выбран элемент из списка Group, новый экран по имени Choose the Table Layout появляется перед экраном Choose the Table Style. Экран разметки таблицы включает окно с меткой Enable drilldown. Нужно выбрать переключатель Stepped, чтобы задействовать окно с меткой Enable drilldown. Следует указать Enable drilldown, чтобы значения полей CompanyName, ContactName и Phone появлялись только после того, как пользователь раскроет значение в столбце Country. Щелкните на Finish и дайте название второму отчету.

На экране 4 на закладке Preview показан отчет Report2. Щелкнув на значке раскрытия (+) рядом с названием страны, попадаем в список вложенных полей группы, изменяющихся от + к -. Заметим, что на экране 4 можно увидеть значения полей CompanyName, ContactName и Phone для клиентов в Мексике, но не для любой из других двух стран. Щелкаем мышью, чтобы раскрыть любую другую страну, и выявляем скрытые вложенные значения столбца.

Развертывание решения

В службе составления отчетов развертывание любого решения — это процесс публикации отчетов, доступных для совместного использования источников данных и связанных элементов файла из проекта Visual Studio.NET в каталоге сервера отчетов. Администраторы могут выставлять ограничения для пользователей на обращения к отчетам и другим элементам решения (например, на доступные совместно используемые источники данных) на сервере отчетов.

Щелкая правой кнопкой мыши на проекте в Solution Explorer и вызывая команды Build, Deploy Solution из среды Visual Studio.NET, пользователь публикует элементы решения в каталоге на сервере отчетов. Первый раз при запуске мастера имя каталога и URL сервера отчетов появляются на экране Choose the Deployment Location. Если такого каталога на сервере отчетов нет, когда автор отчета вызывает команду Build, Deploy Solution, сервер отчетов создает новый каталог.

Можно просмотреть и обновить развернутую папку и значения URL сервера отчетов на страницах свойств проекта. Для этого следует щелкнуть правой кнопкой мыши на имени проекта в окне Solution Explorer и выбрать Properties, чтобы открыть окно Property Pages. Параметр TargetFolder соответствует каталогу развертывания для проекта, и параметр TargetServerURL содержит URL для сервера отчетов, который содержит целевой каталог решения. На экране 5 показано диалоговое окно Property Pages проекта SSMRSIntro в качестве примера. В качестве альтернативы пользователь может изменить местоположение для готовых отчетов с помощью приложения Reporting Services Report Manager после того, как будет опубликован отчет.

Анализ элементов отчета

После того как пользователь распространит отчет и связанные элементы из проекта на сервер отчетов, можно просмотреть элементы одним из двух способов. Сначала воспользуемся возможностью через доступ по URL прочитать содержание отчетов, с правами доступа только на чтение. Кроме того, можно обратиться к серверу отчетов для использования более богатого набора возможностей, включая администрирование служб составления отчетов. Оба подхода требуют учетной записи Windows на локальном сервере Windows или учетной записи на другом доверенном сервере Windows. Администраторы имеют неограниченные права, включая назначение пользователям предопределенных и создаваемых ролей с разрешением на выполнение задач, таких как чтение сообщений.

Соединение с сервером отчетов по URL. Можно соединяться с сервером отчетов, обращаясь к его адресу URL под любой учетной записью пользователя, которая имеет разрешение на соединение с этим узлом. Например, сервер IIS, на котором расположен сервер отчетов Reporting Services в моем офисе, называется cab233a. Другие компьютеры в офисе могут соединяться с сервером отчетов по адресу URL: http://cab233a/ReportServer. Любой пользователь, имеющий авторизованную учетную запись, может через браузер по этому URL рассматривать страницу со ссылками к каталогам на сервере отчетов. Ссылка на каталог SSMRSIntro открывает Web-страницу, содержащую ссылки на два примера из этой статьи и доступные источники данных. Ссылки поименованы по названиям элемента в проекте SSMRSIntro; ссылка Report1 открывает Report1 в браузере.

Экран 6. Просмотр Report1 доступом по URL

На экране 6 показана выборка из доступного через URL вида Report1. Здесь отчет появляется так же, как на экране 3, но Address box показывает URL, который содержит команду для визуализации отчета (rs:Command=Render). Кроме того, раскрывающийся список Select a format в верхней части окна позволяет пользователям сохранять отчет в различных форматах. Например, выбирая Acrobat (PDF) file из раскрывающегося списка, можно сохранять для автономного использования локальную копию отчета в формате PDF.

Вызов сервера отчетов. Пользователи с соответствующими правами могут соединяться с сервером отчетов, набирая в строке http://servername/reports. Для примера этой статьи имя сервера — cab233a. На экране 7 показано подключение к серверу отчетов cab233a и списку каталогов в домашнем каталоге. Щелкая в домашнем каталоге на любом каталоге (например, SSMRSIntro), можно просматривать содержимое выбранного каталога. Пользователи могут задействовать папки сервера отчетов для выполнения задач согласно ролям, назначенным учетной записи Windows и любых групп Windows, которым они принадлежат. Администратору позволено все. Сервер отчетов автоматически корректирует его пользовательский интерфейс, чтобы раскрыть права и элементы, связанные с ролью пользователя.

Экран 7. Вызов сервера отчетов

Дополнительно

Reporting Services — уверенный шаг Microsoft на рынок корпоративных платформ составления отчетов. Мне нравится служба составления отчетов, потому что ее просто и устанавливать, и использовать. Данная служба интегрирована в SQL Server 2005, и, изучив ее, можно смело начинать работать с этим продуктом. По мере освоения службы составления отчетов многие заметят, что ее возможности распространяются дальше, чем я описал в этой обучающей статье. Но приведенную здесь информацию можно использовать как первый шаг к расширению возможностей составления отчетов.

Рик Добсон - Автор, тренер и Web-мастер, специализирующийся на базах данных Microsoft SQL Server, Visual Basic .NET и Web-приложениях для работы с базами данных. www.programmingmsaccess.com