Программное совершенствование отчетов SSRS. Ssrs что это
SQL Server Reporting Services - это... Что такое SQL Server Reporting Services?
SQL Server Reporting Services (сокр. SSRS, рус. Службы отчетности SQL Server) — программная серверная система создания отчетов, разработанная корпорацией Microsoft. Она может быть использована для подготовки множества интерактивных и печатных отчетов. Система администрируется через веб-интерфейс. Reporting services используют интерфейс веб-служб для поддержки разработки обычных отчетных приложений.
SSRS соперничает с Crystal Reports и другими BI-инструментами, и входит в состав Express, Workgroup, Standard и Enterprise версий Microsoft SQL Server в качестве устанавливаемого дополнения. Reporting Services были впервые выпущены в 2004 году как дополнение для SQL Server 2000. Вторая версия была выпущена в виде составной части SQL Server 2005 в ноябре 2005 года. Последняя на данный момент версия была выпущена как часть SQL Server 2008 в августе 2008.
В SSRS отчеты описываются при помощи Report Definition Language (RDL) на языке разметки XML. Отчеты могут проектироваться при помощи последних версий Microsoft Visual Studio (включая Visual Studio.NET 2003 и Visual Studio 2005) с входящим в них дополнением Business Intelligence Projects или при помощи входящего в комплект Report Builder — упрощенного инструмента, не предлагающего полного функционала Visual Studio. Отчеты, определенные при помощи RDL, могут создаваться во множестве различных форматов [1], включая Excel, PDF, CSV, XML, TIFF (и других графических форматах[2]), а также HTML Web Archive. SQL Server 2008 SSRS также может подготавливать отчеты в формате Microsoft Word (DOC).
Сторонние генераторы отчетов предлагают возможность создания отчетов в дополнительных форматах.
Пользователи могут работать с веб-службой Report Server напрямую или использовать Report Manager — веб-приложение, взаимодействующее с веб-службой Report Server. При помощи Report Manager могут просматривать и управлять отчетами, также как и управлять и оперировать источниками данных и настройками безопасности. Отчеты могут рассылаться по электронной почте или записываться на файловую систему как обычный файл. Защита выполняется на основе ролей и может накладываться на отдельные элементы, как например, отчет или источник данных, каталог элементов или сайт вообще. Роли безопасности и права являются наследуемыми и могут быть переопределены.
В дополнение к использованию отдельного Report Server, поставляемого с SQL Server, RDL-отчеты можно просматривать при помощи веб-контрола ASP.NET ReportViewer или Windows Forms-контрола ReportViewer. Это позволяет встраивать отчеты прямо в веб-страницы или .NET-приложения. Контрол ReportViewer обрабатывает отчеты одним из двух способов: (a) на стороне сервера, где отчет обрабатывается Report Server; и (b) локальная обработка, где соответствующий контрол самостоятельно обрабатывает RDL-файл.
SQL 2005 reporting services также поддерживает обработку произвольных отчетов: разработчик создает схему отчета и развертывает ее на сервере отчетности, где пользователь может выбирать нужные поля/данные и создавать отчеты в соответствии со своими нуждами. Потом пользователи могут загружать отчеты локально.
См. также
Примечания
Ссылки
dic.academic.ru
Microsoft SQL Server Reporting Services
SQL Server Reporting Services (SSRS) — это программная серверная система, обеспечивающая набор готовых к применению средств и служб для создания, управления и работы с отчетами компании. Функции программирования Microsoft SQL Server Reporting Services помогают расширить и настроить функциональность отчетов.
Службы Reporting Services содержат инструменты и функции, позволяющие создавать отчеты в любых удобных форматах, используя широкий спектр источников информации, а также включают полный набор уже знакомых инструментов, позволяющих осуществлять управление и производить доставку отчетов, обеспечивая безопасность решения. Службы SQL Server Reporting Services имеют API-интерфейсы, которые дают возможность разработчикам проводить интеграцию или расширять возможности обработки данных и отчетов в пользовательских приложениях. Отчеты обрабатываются и доставляются быстро и эффективно, что позволяет пользователям получать отчеты как автоматически по подписке, так и другими удобными для них способами. Инструменты служб SSRS работают и проектируются в среде Microsoft Visual Studio, целиком интегрированы с инструментами и компонентами SQL Server , а также со службами Microsoft Office SharePoint. Режим интеграции с SharePoint позволяет осуществлять совместную работу над документами, такую как проверку отчетов, внесение и отслеживание изменений в документах, что в свою очередь может существенно дополнить контролируемость и гибкость среды отчетов.
Версии продукта:
- SQL Server 2000;
- SQL Server 2005;
- SQL Server 2008;
- SQL Server 2008 R2;
- SQL Server 2012.
С помощью служб SQL Server Reporting Services отчеты можно создавать и просматривать в любом удобном для пользователей формате, включая HTML, PDF, CSV, XML, в виде рисунка TIFF, а также в виде документов Microsoft Office или как часть узла SharePoint. С помощью Report Manager (веб-приложение которое взаимодействует с веб-службой Report Server) пользователи могут просматривать, публиковать, управлять, обрабатывать или осуществлять доступ к отчетам при необходимости.
Помимо интерактивных, табличных, графических, веб-службы Reporting Services также дают возможность создавать нерегламентированные отчеты на базе стандартных моделей, для интерактивного просмотра данных внутри модели, а также экспортировать отчеты в другие приложения.
Выбирая Microsoft SQL Server 2008 Reporting Services, вы получаете следующие преимущества
- быстрое и простое со здание отчетов с форматированным текстом;
- безопасный доступ к отчетам, папкам, ресурсам и общим источникам данных благодаря ролевой модели безопасности SQL Reporting Services;
- доставки форматированных отчетов пользователям с помощью самых разных механизмов, один из которых автоматическая доставка отчетов посредством подписки.
- простое управление средой отчетов с помощью целого ряда различных средств и технологий, таких как интеграция с SharePoint Server и диспетчер Reporting Services Configuration Manager.
Возможности Microsoft SQL Server Reporting Services
- создание отчетов с любой структурой с помощью уникального формата данных Tablix, а также возможность работы с привычными средствами разработки отчетов на базе Visual Studio;
- высокая производительность и масштабируемость для обслуживания любого числа пользователей;
- создание отчетов в привычном формате Microsoft Office;
- интеграция Reporting Services с Microsoft Office SharePoint Services для централизованной доставки и управления бизнес-отчетами;
- создание отчетов с использованием форматированного текста;
- графическое представление данных с расширенными возможностями визуализации; создание более наглядных отчетов с использованием новых возможностей создания различных диаграмм.
Дополнительная информация:
Решения на базе SQL Server Reporting Services 2008:
Решение «Giusto Consulting: Управленческая отчетность на базе Microsoft SQL Server Reporting Services».
В начало
Скачать материалы по SQL Server Reporting Services
Для получения подробной информации по продукту заполните электронную форму.
Giusto Consulting проводит авторизованные курсы Microsoft в своем Тренинг-Центре.
www.giustoconsulting.com
Знакомство с MS SQL Server Reporting Services — Для «Scalaлазов»
Общий обзор
Для того чтобы начать работу с учёбными материалами Вы должны запустить виртуальную машину.
Сведения для входа:
Логин: Administrator
Пароль: !ssrs!
Также для целей тестирования доступа Вам могут понадобиться другие учётные записи:
«Accountant», «scala». Пароль: «ssrs»
Войдите в систему как «Administrator». Запустите Internet Explorer. При первом запуске Вам придётся подождать пару минут, в дальнейшем отображение страниц будет происходить быстрее. Вы попадёте на главную страницу нашего локального «Сервера отчётности»:
В корневой папке отображены 4 подпапки. На самом деле их больше, только часть из них скрыта. Вы можете увидеть скрытые объекты, если нажмёте на «Показать подробности». Сейчас мы обладаем правами администратора и видим всё. Другие пользователи увидят только те объекты, куда им предоставлен доступ.
Определимся с тем, что представляет собой MS SQL Server Reporting Services. А является он следующим:
- Средством хранения отчётов и других компонентов. Все отчёты, источники данных хранятся в базе данных MS SQL.
- Средством создания, доставки и распространения отчётов. Отчёты могут «запускаться» пользователем «онлайн» или по расписанию и доставляться в виде «слепков» в заранее определённую сетевую папку или по электронной почте.
- Средством доступа к отчётам, интегрированным с правами доступа сети.
- Средством «запуска» «внешних» процедур
Прежде всего, поговорим о правах доступа. Наиболее удобно организовать доступ к папкам на основе групповых политик, когда Вы даёте доступ на папку определённой группе пользователей по смыслу, например, на папку «Accountants» группе «Accountants», а также тем, кто «над ними», например, «GeneralManagement».
Также удобно, размещать в папке не сам отчёт, а так называемый «связанный отчёт» (linked report). В чём удобство? А в том, что Вы можете создать один отчёт (оригинал) и создать на него несколько «ярлыков» (связанных отчётов), разместив их в разных папках. Для связанных отчётов могут быть указаны свои значения по умолчанию, причём Вы сможете часть параметров скрыть. Например, один и тот же отчет, имеющий в оригинале параметр «Код компании» может иметь 2 связанных отчёта, размещённых в 2-х разных папках, в одну из которых имеют доступ пользователи компании 01, в другую – компании 02. Соответственно для связанного отчета в первой папке мы можем скрыть параметр «Код компании», установив значение по умолчанию «01», для отчёта во второй папке значение по умолчанию будет «02». Таким образом, при запуске из первой папки отчёт будет показывать данные из компании 01, из второй – данные компании 02.
Права на папки даны таким образом, чтобы отчёты в папке «Компания 01» были доступны тем, кто вправе видеть информацию из компании 01, а в папке «Компания 02» — соответственно информацию из компании 02. Для того чтобы проверить, кто имеет доступ в определённую папку и какого рода, достаточно перейти в нужную папку, щёлкнуть сначала на закладке «Свойства», затем на ссылке «Безопасность»:
Как видно на картинке выше, доступ в папку «Компания 02» имеют пользователи, входящие в группу администраторов с правами «Диспетчер содержимого» (Позволяет управлять содержимым на сервере отчетов. Содержимое включает папки, отчеты и ресурсы), а также пользователи, входящие в группу «iScalaCompany02» с правами «Обозреватель» (Позволяет просматривать папки, отчеты и подписываться на отчеты). Лучше всего для управления доступом к различным папкам использовать именно групповые политики.
Возвращаясь к теме «связанных» отчётов: если Вам понадобится внести изменение в отчёт, Вы должны будете заменить его лишь в одном месте – месте хранения оригинала. Более подробно мы рассмотрим такой пример в практической части.
Кроме «связанных» отчетов можно использовать подотчёты, а также «сворачивать» информацию в интерактивном режиме, переходить по ссылке из одного отчёта в другой. С этими возможностями мы познакомимся в практической части нашего обучения.
Об отчётах по использованию отчётов и об отчётах «выполняющих действие» мы поговорим, когда будем знакомиться с примерами практического использования Reporting Services в компаниях-клиентах Epicor|Scala.
В качестве первого знакомства с «Сервером Отчётности» Вам предлагается запустить упоминавшийся выше отчёт по таблицам и полям iScala. Чтобы найти его, перейдите в папку «IT». Можно также найти данный отчёт, если Вы введёте слова «Описание полей» в поле «Искать» и нажмёте кнопку «Перейти». Вы получите результат, где будет 2 отчёта с одинаковым именем и описанием. Если включить подробности, то можно увидеть, что они расположены в разных папках, а пиктограммы, обозначающие тип отчёта также отличаются. Один из отчётов является оригиналом, второй – связанным отчётом:
Загрузите любой из найденных отчётов и опробуйте его в работе.
Содержание:
scala.org.ru
Полезный функционал при разработке отчетов в SQL Server Reporting Services (SSRS) | Info-Comp.ru
Продолжаем рассматривать службы Reporting Services в частности процесс разработки отчетов и сейчас, как и обещал, мы будем рассматривать создание более сложных отчетов в среде Business Intelligence Development Studio.
Это не первая статья посвящённая службам Reporting Services напомню, ранее мы уже говорили о том, что такое SQL Server Reporting Services, установили и настроили SSRS, а также рассмотрели процесс разработки простого отчета в среде BIDS. Поэтому подразумевается, что у Вас уже развернуты службы Reporting Services и Вы можете создать простой отчет среде Business Intelligence Development Studio, т.е. добавить источник данных, набор данных, знаете, как добавлять элементы на макет, в общем, основы. А сегодня мы приступим к рассмотрению функционала, без которого, при разработке отчетов, просто не обойтись или он будет полезен и удобен пользователям. Конечно, рассмотреть все мы не сможем, но основные возможности узнаем, предлагаю построить статью следующем образом, я буду просто перечислять возможности, которые будут Вам полезны естественно с примерами использования и скриншотами для более лучшего понимания и усвоения.
Исходные данные
В качестве источника данных, как и в предыдущей статье, предлагаю использовать тестовую таблицу в тестовой базе данных расположенную на MS SQL Server 2008 R2.
В качестве конструктора, как Вы, наверное, уже поняли, я буду использовать среду SQL Server Business Intelligence Development Studio.
Напомню, таблица у нас содержит следующие данные:
Параметры
Без использования параметров при разработке отчетов, наверное, не обойтись, поэтому давайте начнем именно с параметров.
Параметры можно использовать практически везде, например, просто выводить на макет, использовать в качестве условия в наборе данных и, конечно же, использовать в выражениях.
Если вспомнить наш пример из предыдущего материала то мы там просто выводили все данные, используя запрос
select * from dbo.ProductsTableа теперь допустим, пользователю не нужны все данные, он хочет сам их фильтровать. Для этого мы просто создаем параметр и используем его в наборе данных в качестве значения для условия. Параметр можно создать несколькими способами, в нашем случае мы можем сразу указать название параметра в запросе, и он автоматически создастся в отчете, например:
select * from dbo.ProductsTable where price >=@priceт.е. как Вы понимаете параметр здесь @price, а сам запрос мы вставляем в свойства набора данных в текст запроса
И если мы нажмём «ОК» то у нас в окне «Данные отчета» в параметрах отобразится параметр @price.
Параметр также можно было создать, используя правую кнопку по пункту «Параметры» или через меню «Создать параметр»
Теперь давайте проверим работу отчета с параметром, для этого переходим на вкладку «Просмотр» вводим значение параметра и нажимаем кнопку «Просмотреть отчет»
Как видите, у нас вывелись все строки, у которых цена товаров больше или равно 200.
Но теперь допустим, что пользователь не хочет вводить сумму вручную он хочет только кликать мышкой, например, у него всего три возможных варианта значение параметра и вводить каждый раз вручную ему не хочется, мы это можем устроить путем создания выпадающего списка.
Список возможных значений мы можем создать двух типов это статический и динамический, т.е. например, если у нас всего и всегда будет 3 значения параметра, то мы можем перечислить их вручную, а если они будут меняться, то можно использовать в качестве списка запрос к базе, т.е. набор данных (который предварительно должен быть создан). В нашем случае давайте просто, перечислим их вручную, для этого открываем свойства параметра в окне «Данные отчета» путем правой кнопки мыши.
Сначала давайте зададим текст, который отображается перед параметром, так как согласитесь, что такое price некоторые пользователи могут не понять и тип данных параметра, допустим, это будет целое число.
Затем перейдем на пункт «Допустимые значения», в нашем случае выбираем «Указать значения» и соответственно вводим их, используя кнопку «Добавить».
Еще для примера давайте зададим значение по умолчанию, допустим 0. Для этого перейдем на пункт «Значение по умолчанию» и через кнопку добавить вводим значение
Все жмем «ОК» и проверяем работу.
Как видите, все работает.
Интерактивная сортировка
Такая сортировка позволяет уже в сформированном отчете самим пользователем осуществлять сортировку данных. На самом деле очень полезная и удобная вещь.
Для того чтобы включить такую сортировку мы открываем «Свойства текстового поля» заголовка столбца, это можно сделать путем его выделения и нажатия правой кнопки, а затем перейдя в пункт «Интерактивная сортировка»
Или также выделением заголовка и в окне свойств нажать «UserSort» тем самым сразу перейдя в нужный пункт.
Затем мы просто включаем интерактивную сортировку, в нашем случае для строк детализации, и выбираем поле, по которому сортировать.
Жмем «ОК» и проверяем работу
Мы видим, что появился некий элемент управления при использовании которого, будет происходить сортировка по полю price.
Группировка
Это также очень полезная возможность и она нужна для того чтобы группировать данные с использованием агрегатных функций.
Допустим, пользователь хочет, чтобы в его отчете выводились сводные данные по городам, для этого мы немного переконструируем наш макет и добавим группировку по полу city. Выведем поле price и даже просуммируем его и отобразим в заголовке группы.
Для этого в качестве примера давайте добавим на макет еще один элемент «Таблица» свяжем его с нашим набором данных, т.е. вызываем меню «Свойства табликса» правой кнопкой
И в пункте «Имя набора данных» выбираем необходимый набор и жмем «ОК».
Примечание! В предыдущем материале мы не связывали таблицу с набором данных, так как мы просто перетягивали поля с окна «Набор данных» на нашу таблицу и тем самым привязка выполнилась автоматически.
Теперь наша таблица связана с набором данных, и мы можем добавить группировку для этого в области «Группы строк» кликаем по указанному ниже значку и добавляем родительскую группу
Группируем по полю city и добавляем верхний колонтитул группы и жмем «ОК»
Нам осталось только выбрать поля для отображения и удалить крайние столбцы, так как в нашем случае они не нужны
Еще можно выделить сумму группы или изменить ее шрифт для того чтобы было наглядней. Проверяем работу.
Вот такой вот результат.
Детализация данных
В предыдущем примере мы сразу выводили сумму группы и ее детализацию, но допустим, пользователю сразу не нужны подробные данные, ему сначала нужны только сводные, а потом в случае необходимости он мог быстро получить детализацию этих данных. Это можно сделать путем управления видимостью элементов и в нашем случае мы можем при открытии отчета просто скрыть детализацию (сведения) и назначить элемент управления для переключения.
Что мы делаем, в области «Группы строк» вызываем меню «Свойства группы» для элемента (Группы) в моем случае это «Сведения1»
Затем переходим в пункт «Видимость» и говорим, что при первом запуске данную область скрыть, а также что отобразить ее может тот или иной элемент, в моем случае price2, это название поля в котором отображается сумма группы.
Жмем «ОК» и проверяем.
Видим, что сначала у нас отображены только сводные данные, но если нажать на плюсик
Отобразится детализация группы.
Элемент матрица
До этого для отображения данных мы использовали только элемент таблица, но есть еще такой полезный элемент как «Матрица», который в отличие от таблицы может отображать данные по двум осям.
Чтобы было понятней давайте на макет добавим элемент «Матрица»
и перетянем на него поля, по столбцам допустим, у нас будут города, по строкам названия товаров, а в качестве данных будем также использовать цену.
Проверяем
Видим, что у нас в название колонок отображены города, т.е. количество колонок сформировано динамически на основе данных, на пересечение сумма цен. Этот элемент незаменим тогда, когда необходимо отображать сгруппированные данные, как по строкам, так и по столбцам.
На этом давайте заканчивать, надеюсь, все было понятно, в следующих материалах мы продолжим разговор о службах Reporting Services. Удачи!
Похожие статьи:
info-comp.ru
Программное совершенствование отчетов SSRS | Windows IT Pro/RE
Службы SQL Server Reporting Services (SSRS) — платформа для подготовки отчетов корпоративного уровня, размещаемая над широко распространенными службами в серверных технологиях Windows, в том числе SQL Server, ASP.NET и Microsoft. NET Framework. Одно из самых важных качеств SSRS — возможность расширить функции подготовки отчетов с помощью пользовательского кода и программных модулей. В этой статье я поясню, насколько пользовательский код и модули практически применимы при формировании ежедневных отчетов, и расскажу о встроенных модулях SSRS и концепции настраиваемых сборок. Затем будут даны пошаговые инструкции по подготовке специализированной сборки с помощью Visual Studio и ее использования для построения набора данных динамического отчета.
Выбор инструмента
Программисты привыкли использовать инструменты с возможностями объектно-ориентированного проектирования (например, управление экземплярами объектов, интерфейсы, наследование классов) и моделями программирования, управляемыми событиями, для построения пользовательских приложений и компонентов приложений. Важно понимать, что для практического применения SSRS не поддерживает таких программных методов и моделей, и на то есть веские причины. SSRS — платформа подготовки отчетов, а не инструмент программирования.
Во время обсуждений методов подготовки отчетов в моем блоге по SQL Server BI и на других форумах мне иногда приходится встречать такие мнения программистов: «Мне не нужен такой инструмент подготовки отчетов, как SSRS. Я могу просто спроектировать специализированное веб-приложение, а затем самостоятельно управлять всем с помощью программных объектов. NET». Я уважаю это мнение и считаю такой подход обоснованным, если требуется управлять каждым элементом пользовательского интерфейса, поведением и взаимодействием. С помощью кода событий и пользовательских элементов управления можно добавить удобные функции, просто недоступные в SSRS. Но при этом необходимо предусмотреть, что произойдет, если объем данных в пользовательском отчете окажется в 100 раз больше ожидаемого или отчет будет запущен несколькими пользователями одновременно. И как удовлетворить потребность пользователя просмотреть отчет в разнообразных форматах? Такие вопросы успешно решаются в SSRS без дополнительных усилий со стороны программиста.
Основными компонентами отчета — соединениями данных, выполнением запросов, наборами результатов, кэшированием данных и т.д. — следует управлять с помощью встроенных функций, не вдаваясь в сложное программирование. Важно уметь различать задачи, успешно решенные в SSRS, чтобы не ломать напрасно голову над сложными приемами программирования.
Модули
В основе SSRS лежит расширяемая архитектура. Признаюсь, что начиная работать с SSRS в 2003 году, я был очарован расширяемостью служб и возможностью добавлять программный код в решения для отчетов. Как программист, работающий в. NET, я полагал, что отчеты будут естественным продолжением моих усилий как программиста. Но построив несколько сложных решений для отчетов и работая с другими программистами над архитектурой крупных решений в течение десяти лет, я понял, что огромному большинству решений SSRS не требуется дополнительное программирование. Лучшее применение библиотеки пользовательского кода — расширить встроенные возможности архитектуры SSRS, а не заменить удачные функции. Подготовка пользовательских модулей — непростая задача, и обычно она выходит за рамки практического применения для подготовки корпоративных отчетов.
Во внутренних механизмах SSRS используется набор сборок. NET, представляющий собой модули для работы с большинством основных функций. SQL Server версий Standard, Business Intelligence и Enterprise Editions автоматически устанавливает некоторые из этих модулей. Например, при экспорте отчета в Microsoft Excel применяется модуль подготовки отчетов Excel. При планировании подписки модуль доставки электронной почты или файловой системы используется вместо стандартного модуля доставки интерактивных отчетов.
В SQL Server версий Standard, Business Intelligence и Enterprise Editions службы SSRS обеспечивают расширение следующими способами.
- Модули обработки данных. Эти модули предоставляют доступ к различным типам данных с использованием согласованной программной модели. Среди модулей для обработки данных — модули для SQL Server, SQL Server Analysis Services (SSAS), SQL Server Parallel Data Warehouse, SQL Azure, списков Microsoft SharePoint, моделей отчетов, ODBC, OLE DB, Hyperion Essbase, Oracle, SAP NetWeaver Business Intelligence, Teradata и XML. Кроме того, компания Microsoft предоставляет модули для обработки данных для SAP Relational DB и DB2.
- Модули доставки. Эти модули взаимодействуют с каким-либо механизмом доставки для отправки отчетов пользователям. Среди них модули для интерактивных отчетов, электронной почты, файловой системы и поставщика NULL; они позволяют воспроизводить отчеты без сохранения вывода.
- Модули подготовки отчетов. Эти модули управляют типом документа или носителя, создаваемого при выполнении отчета. Компания Microsoft предоставляет несколько модулей, охватывающих широко распространенные и полезные типы документов, в том числе HTML, веб-архив, PDF, Excel, Microsoft Word, изображения, XML и CSV (с разделением запятыми).
- Модули безопасности. Они обеспечивают проверку подлинности и авторизацию пользователей для запуска отчетов на сервере отчетов. Предоставляемые модули поддерживают встроенную в Windows защиту и проверку подлинности ASP.NET на основе форм. Можно реализовать и собственную модель безопасности на основе ролей с любым критерием проверки подлинности.
- Модули обработки отчетов. Эти модули обеспечивают создание пользовательских элементов отчетов, управляемых механизмом обработки отчетов. С их помощью можно расширить стандарт языка определения отчетов (RDL), дополнив его функциональностью, изначально отсутствующей в RDL, в частности пользовательскими картами MapPoint и горизонтальными списками. Также можно расширить имеющиеся элементы отчета, добавив альтернативные версии, более подходящие для конкретного применения.
- Модули настройки определения отчета предоставляют выход к предварительной обработке определения отчета. Можно подключить пользовательский код, который изменяет поток определения отчета перед его обработкой. Это удобно, если необходимо изменить структуру отчета в зависимости от культурных или местных особенностей, либо личности пользователя, указанного в запросе отчета.
При необходимости создать пользовательские модули можно учиться на опыте других разработчиков. Я работал с компаниями, в которых SSRS применяется как составная часть набора служб, и некоторые из них создали собственные модули. Одна компания построила специальный модуль безопасности, чтобы пользователи могли выполнять регистрацию и проходить проверку подлинности в ее программе, не прибегая к Windows. Другие компании со сложными уровнями данных и прикладного программирования строят специальные модули обработки данных, которые используются вместо стандартных поставщиков данных в SSRS. Например, одна компания построила модуль для обработки данных, применив его к сложным бизнес-правилам и логике фильтров, специфичным для отрасли. В каждом случае группам программистов потребовались месяцы, чтобы создать продукт, устранить ошибки, протестировать и внедрить специализированные модули в производство.
Настраиваемые сборки
Сборка — модуль повторно используемого программного кода, обычно подготовленный с помощью языка программирования. NET в среде Visual Studio и часто скомпилированный в DLL-файл, содержащий повторно используемые функции и другую программную логику. Специализированную сборку можно применить, чтобы расширить функциональность отчетов на многие отчеты на одном сервере. Например, если нужно обработать параметрические бизнес-правила, распространяющиеся за рамки возможностей языка запросов, такого как T-SQL или MDX, можно задействовать специализированную сборку для управления запросом к набору данных отчета и связанным поведением отчета. SQL — мощный язык, с помощью которого можно обработать достаточно громоздкую бизнес-логику. При возможности можно задействовать язык запросов — и особенно устойчивые объекты базы данных, такие как хранимые процедуры — для инкапсуляции сложных правил. Лучшие примеры наиболее эффективного применения этого метода гораздо сложнее, чем я привожу в данной статье. Однако показанные приемы представляют интерес и, в некоторых случаях, могут оказаться необходимыми.
Создание специализированной сборки
В следующем примере показано, как построить специализированную сборку, которая собирает инструкцию T-SQL на основе нескольких параметризованных аргументов. Сборка проектируется в среде Visual Studio 2010 в проекте библиотеки классов, который может быть частью того же решения, что и проект отчета. После тестирования сборка развертывается в доверенных папках, где ее можно использовать в SQL Server Data Tools (SSDT) или конструкторе отчетов Business Intelligence Development Studio (BIDS) на сервере отчетов. Проект выполнен в Visual Basic. NET, но с тем же успехом можно использовать C#. Рабочий экземпляр отчета и образцовый программный код проекта можно загрузить, нажав кнопку Download.
Создание представления и проекта библиотеки классов
Первая задача — создать представление vSalesByTimeAndTerritory в базе данных AdventureWorksDW2012. Убедившись, что вы имеете разрешение на создание объектов в этой базе данных, откройте окно запросов SQL Server Management Studio (SSMS) и выполните сценарий листинга 1, чтобы создать представление.
Затем необходимо создать проект библиотеки классов в среде Visual Studio, выполнив следующие действия.
- Из меню File в Visual Studio выберите New и пункт Project.
- В окне Add New Project («Добавление нового проекта») выберите Visual Basic в области Installed Templates («Установленные шаблоны»).
- На центральной панели выберите Class Library («Библиотека классов») и назовите проект Report_Class_Lib.
- В обозревателе решений измените имя класса файлов по умолчанию на ReportLib.cls.
- Откройте ReportLib.cls в редакторе кода Visual Basic. Работая с этим редактором, рекомендуется включить функции завершения и отладки, чтобы упростить работу. Например, если представлен список объектов, можно выбрать нужный объект с помощью клавиш со стрелками, а затем добавить свой код нажатием клавиши Tab. Можно также нажать клавишу Enter, чтобы выбрать объект и добавить новую строку кода.
- После объявления Public Class ReportLib введите исходный текст из листинга 2. Он создает функцию SalesQuery, которая строит запрос T-SQL на основе условной логики в программном коде. Обратите внимание, что символы продолжения строки необязательны и приведены только для того, чтобы исходный текст уместился на странице. При желании можно пропустить символы подчеркивания (_) и возвраты каретки в каждой строке, завершающейся символом подчеркивания.
- Выполните проверку на наличие ошибок и предупреждений с красными или зелеными извилистыми линиями под ключевыми словами.
- В обозревателе решений щелкните правой клавишей мыши проект Report_Class_Lib и выберите пункт Build («Сборка»).
Развертывание библиотеки классов
Прежде чем продолжить, отметим два важных обстоятельства. Необходимо найти папки для сборок, которым доверяет Visual Studio и сервер отчетов SSRS. В различных версиях продукта эти пути похожи, но зависят от параметров, выбранных при установке и настройке. После того, как пути найдены, скопируйте их и вставьте в программу Notepad.
В этом примере используется путь C:Program Files (x86)Microsoft Visual Studio 10.0Common7IDEPrivateAssemblies для папки сборок Visual Studio 2012. Для сервера отчетов SSRS применяется путь отчетов по умолчанию в SSRS 2012 — C:Program FilesMicrosoft SQL ServerMSRS11.MSSQLSERVERReporting ServicesReportServerbin. Обратите внимание, что если используется SSRS 2012 в SharePoint, то путь по умолчанию — C:Program FilesCommon FilesMicrosoft SharedWeb Server Extensions14WebServicesReportingbin.
После того, как пути внесены в Notepad, выполните следующие действия.
1. Откройте свойства проекта. В разделе Compile («Компилировать») выберите Build Events («События построения»).
2. В текстовом поле Post-build event command line («Командная строка события после построения») введите следующие команды, указывая пути, скопированные в Notepad:
COPY /Y «C:UsersAdministratorDocuments Visual Studio 2010ProjectsReport_Class_LibbinDebug Report_Class_Lib.dll» «C:Program Files (x86) Microsoft Visual Studio 10.0Common7IDEPrivateAssemblies» COPY /Y «C:UsersAdministratorDocuments Visual Studio 2010ProjectsReport_Class_LibbinDebug Report_Class_Lib.dll» «C:Program Files Microsoft SQL ServerMSRS11.MSSQLSERVER Reporting ServicesReportServerbin»Команды показаны разбитыми на несколько строк, но в действительности их нужно вводить в одной строке. В режиме интеграции с SharePoint необходимо также скопировать сборку в общую папку для расширений веб-сервера. Для этого добавьте следующую строку:
COPY /Y «C:UsersAdministratorDocuments Visual Studio 2010ProjectsReport_Class_LibbinDebug Report_Class_Lib.dll» «C:Program FilesCommon Files Microsoft SharedWeb Server Extensions14 WebServicesReportingbin»3. Настройте событие после построения для запуска после успешного завершения сборки, как показано на экране 1.
Экран 1. Настройка события для запуска после успешного завершения сборки |
4. Нажмите кнопку OK, чтобы сохранить изменения.
5. Постройте проект заново.
С помощью проводника Windows убедитесь, что файл Report_Class_Lib.dll был скопирован куда нужно и имеет недавнюю дату изменения.
Создание отчета
Теперь можно создать отчет. К нему предстоит добавить ссылку на сборку (экран 2), параметры и выражение. Выполните следующие действия.
Экран 2. Добавление ссылки на сборку в отчет |
1. Создайте новый отчет с именем Generated Query.
2. Выберите Report Properties («Свойства отчета») из меню Report («Отчет»).
3. В диалоговом окне Report Properties выберите страницу References («Ссылки»).
4. В разделе Add or remove assemblies («Добавить или удалить сборки») нажмите кнопку Add («Добавить»).
5. Нажмите кнопку с многоточием (...) справа от новой строки.
6. В диалоговом окне Add Reference («Добавление ссылки») перейдите на вкладку Browse («Обзор») и найдите файл Report_ClassLib.dll в папке доверенных сборок.
7. Выделите файл Report_ClassLib.dll и нажмите кнопку OK, чтобы добавить reference.
8. В разделе Add or remove classes («Добавить или удалить классы») страницы References нажмите кнопку Add.
9. В поле под столбцом Class Name («Имя класса») введите Report_Class_Lib.ReportLib.
10. В поле под столбцом Instance Name («Имя экземпляра») введите m_ReportLib. Это псевдоним имени класса, который будет использоваться в отчете.
11. В окне Report Data («Данные отчета») в левой стороне конструктора отчетов щелкните правой кнопкой мыши узел Parameters, чтобы добавить новый параметр.
13. Воспользуйтесь окном Report Parameters («Параметры отчета»), чтобы добавить каждый параметр. Используйте информацию из таблицы, чтобы задать имя, приглашение, тип и значение каждого параметра по умолчанию.
14. Для параметра SalesQuery установите видимость Hidden («Скрытый») на странице General («Общие») в диалоговом окне Report Parameters («Параметры отчета»), а затем перейдите на страницу Default Value («Значение по умолчанию»).
15. Выберите Specific values («Определенные значения»), чтобы добавить значение по умолчанию.
16. Нажмите кнопку Expression («Выражение») (fx) справа от раскрывающегося списка.
17. Введите следующий текст, а затем поместите курсор между скобками:
=Code.m_ReportLib.SalesQuery( )18. Выберите Parameters («Параметры») из списка Category («Категория») и дважды щелкните параметр YearFrom, чтобы добавить reference в выражение. Введите после этого текста запятую с последующим пробелом.
19. Используйте ту же процедуру для ввода дополнительных параметров, необходимых для построения следующего выражения (без возвратов каретки):
=Code.m_ReportLib.SalesQuery(Parameters!YearFrom.Value , Parameters!YearTo.Value, Parameters!Country.Value , Parameters!MaxRows.Value, Parameters!IncludeFreight.Value)20. Нажмите кнопку OK, чтобы сохранить выражение.
21. Добавьте текстовое поле к отчету.
22. Щелкните правой кнопкой мыши текстовое поле и выберите пункт Expression («Выражение»).
23. Используйте Expression Builder («Построитель выражений»), чтобы присвоить выражению текстового поля следующее значение:
=Parameters!SalesQuery.Value24. Просмотрите сформированный запрос. Он будет показан в текстовом поле, как на экране 3.
Экран 3. Предпросмотр сгенерированного отчета |
25. Убедитесь в правильности синтаксиса сформированного запроса. Он должен быть следующим:
- ВЕРХНЕЕ значение должно быть задано параметром MaxRows;
- столбец Freight должен войти в список столбцов, так как параметру IncludeFreight присвоено значение True;
- значения YearFrom и YearTo в предложении WHERE должны соответствовать значениям параметров YearFrom и YearTo, соответственно;
- предложение WHERE не должно содержать столбца SalesTerritoryCountry, так как параметру Country присвоено значение All.
26. На вкладке предварительного просмотра измените значения параметров и повторно запустите отчет, чтобы увидеть последствия сформированного запроса.
Важно отметить, что значения параметров в этом примере не проверены и могут содержать ошибки или встроенный программный код. Решение необходимо дополнить мерами защиты, прежде чем внедрять его в производство. Но об этом позже.
Использование сформированного запроса для создания набора данных отчета
Если отчет формирует корректные запросы, то следующая задача — скопировать сценарий SQL и использовать его для создания начального запроса к набору данных. Выполните перечисленные ниже действия.
- Разверните отчет на сервере отчетов и запустите отчет.
- Пока отчет выполняется в браузере, выделите все содержимое текста параметра SalesQuery, показанное в верхней части отчета, и скопируйте сценарий SQL в буфер обмена.
- В конструкторе отчетов перейдите в представление конструирования.
- Добавьте источник данных, чтобы подключиться к базе данных AdventureWorksDW2012. Можно использовать встроенный или общий источник данных.
- Добавьте новый встроенный набор данных к отчету и назначьте набору данных имя ReportData.
- В диалоговом окне Properties набора данных вставьте скопированный сценарий SQL в поле Query («Запрос»).
- Нажмите кнопку OK. Обратите внимание, что конструктор отчетов выполняет запрос, чтобы сформировать список полей набора данных.
- Разверните список полей набора данных на панели Report Data.
- Добавьте таблицу в текст отчета.
- Переместите с помощью мыши поля CalendarYear и MonthNumberOfYear на панель Row Groups («Группы строк») в нижней части конструктора.
- Измените ячейку заголовка строки MonthNumberOfYear в таблице, чтобы показать поле MonthName.
- Переместите с помощью мыши поле SalesTerritoryCountry в первую открытую ячейку сведений в таблице.
- Отредактируйте группу Details на панели Row Groups. Добавьте группу с использованием поля SalesTerritoryCountry.
- Переместите с помощью мыши поля SalesAmt и Freight в ячейки сведений таблицы.
- В целях отладки измените значение параметра SalesQuery на Visible, но обязательно скройте его после завершения отладки. В противном случае отчет не будет выполняться корректно.
Функционально отчет завершен, но в нем есть ряд уязвимых мест. Разработчики служб SSRS предусмотрели несколько мер безопасности, но не играйте с огнем. В этот пример не нужно вносить изменений, а при внедрении в производство рекомендуется изучить материал раздела «Безопасность — в первую очередь», чтобы исключить возможность атаки путем внедрения кода SQL.
Динамическое скрытие столбца Freight
Возможность выборочно показывать или скрывать различные столбцы — первый шаг к тому, чтобы возложить на один отчет функции многих отчетов. Чтобы показать, как это делается, динамически скроем столбец Freight. Выполните следующие действия в конструкторе отчетов.
1. Щелкните ячейку таблицы, чтобы показать маркеры выделения столбца и строки.
2. Щелкните правой кнопкой мыши серый заголовок для столбца Freight и выберите пункт Column Visibility.
3. В диалоговом окне Column Visibility выберите переключатель с меткой Show or hide based on an expression («Показать или скрыть в зависимости от выражения»).
4. Откройте диалоговое окно Expression Builder («Построитель выражений») и введите выражение
=(Fields!Freight.IsMissing).5. Нажмите кнопки OK, чтобы сохранить и закрыть диалоговые окна Expression Builder и Column Visibility («Видимость столбца»).
Изменение набора данных для использования сформированного кода
Необходимо выполнить небольшую реорганизацию, изменив способ подготовки запроса. Выполните следующие действия.
1. На панели Report Data дважды щелкните ReportDatadataset.
2. В диалоговом окне Dataset Properties («Свойства набора данных») нажмите кнопку Expression («Выражение») (fx) рядом с полем Query («Запрос»).
3. В диалоговом окне Expression Builder замените текст команды ссылкой на параметр SalesQuery:
=Parameters!SalesQuery.Value4. Нажмите кнопку OK, чтобы сохранить и закрыть диалоговые окна Expression Builder и Dataset Properties.
5. Убедитесь, что параметр SalesQuery имеет значение Hidden.
6. Измените свойство Hidden, чтобы скрыть текстовое поле, в котором показано значение параметра SalesQuery.
7. Просмотрите отчет и поэкспериментируйте с различными значениями параметра. Образец отчета показан на экране 4.
Экран 4. Предпросмотр отчета |
Отладка запроса
Такое решение, как правило, требуется отладить. Полезно составить короткий список пунктов отладки и выполнять их каждый раз, когда необходимо изменить проект или программный код.
Если вас не устраивают полученные результаты, следует сначала нажать кнопку Refresh («Обновить») на инструментальной панели отчетов, чтобы очистить кэш выполнения и перезапустить запрос. SSRS устроен так, что прошлые результаты сохраняются в кэше.
Если правильных результатов получить все же не удается или параметры работают некорректно, то, скорее всего, набор данных не использует сформированный код. Для отладки отмените скрытие параметра SalesQuery и покажите текстовое поле. Выполняя отчет, проверьте значения, чтобы убедиться в правильности синтаксиса запроса. Если он неверный, значит, ошибка в программном коде. Если параметр правильно сформировал синтаксис запроса в текстовом поле, но не изменил вывод отчета, то остается только проверить выражение, использованное для сопоставления набора данных параметру.
Безопасность — в первую очередь
Всегда, когда запрос формируется из данных пользовательского ввода, необходимо обратить внимание на безопасность. Внедрение кода SQL — метод, используемый хакерами для несанкционированного доступа к данным и компонентам сервера базы данных. Службы SSRS менее уязвимы для атак путем внедрения кода SQL благодаря ряду встроенных мер безопасности, однако важно проявлять осторожность при использовании параметров, открытых для таких запросов.
Необходимо убедиться, что учетная запись пользователя, применяемая источником данных, имеет доступ только для чтения и только к данным, необходимым для отчета. Также нужно быть аккуратным с параметрами с текстовым типом данных. Числовые, логические данные и даты обычно не представляют угрозы, так как вместо их значений нельзя подставить сценарий. При возможности скрывайте параметры с текстовыми данными. Для параметров, которые должны быть видимыми и требуют текстовых значений, используйте специализированную функцию, чтобы проверять текстовые значения. Разрешайте только определенные значения и отсекайте строки, ограничивая их максимальную длину.
Используйте политики исключений безопасности
Любой пользовательский код сборки, который управляет строками, форматированием или подготовкой динамических запросов, как в данном примере, будет прекрасно выполняться и не потребует специальной настройки. Если этим ограничивается назначение сборки, то можно начинать действовать.
Если же сборка содержит ссылки на пространства имен, требующие дополнительных разрешений, для доступа к внешним ресурсам, таким как файловая система, то по умолчанию сборка не будет доверенной. Таким образом, необходимо настроить явные доверительные отношения между сервером отчетов и сборкой. Сделать это несложно, но необходимо строго следовать инструкциям.
Реализация политики исключений безопасности — задача управления, которую требуется тщательно продумать перед внедрением в производство. Прежде чем просить администратора корпоративных серверов о реализации политик исключений безопасности для компонента, следует четко разъяснить, для каких целей может использоваться компонент и почему исключение — обязательная часть решения. В статьях MSDN «Code Access Security in Reporting Services» и «Using Reporting Services Security Policy Files» подробно объясняются критерии и показано, как создать необходимые группы кода и именованные наборы разрешений.
Полезный метод
Настраиваемые сборки можно использовать в отчетах для различных целей. Например, централизованно управляемый компонент поможет единообразно применять стили ко всем отчетам. Изменив одно значение базы данных или выбирая параметр, можно изменить логотип компании или применять различные стили, рамки и шрифты к каждому отчету.
В статье показан один из многих возможных методов. Я надеюсь, что читатели видят потенциал этого подхода и смогут с успехом применять его для разработчиков отчетов, а главное — для пользователей из сферы бизнеса и акционеров компаний, доверивших вам свое благосостояние.
Листинг 1. Создание представления
USE AdventureWorksDW2012 GO CREATE view dbo.vSalesByTimeAndTerritory AS SELECT top 100 percent d.CalendarYear , d.CalendarQuarter , d.MonthNumberOfYear , d.EnglishMonthName MonthName , st.SalesTerritoryGroup , st.SalesTerritoryRegion , st.SalesTerritoryCountry , sum(s.SalesAmount) SalesAmt , sum(s.OrderQuantity) OrderQty , sum(s.Freight) Freight FROM FactResellerSales s inner join DimDate d on s.OrderDateKey = d.DateKey inner join DimSalesTerritory st on s.SalesTerritoryKey = st.SalesTerritoryKey GROUP BY d.CalendarYear , d.CalendarQuarter , d.MonthNumberOfYear , d.EnglishMonthName , st.SalesTerritoryGroup , st.SalesTerritoryRegion , st.SalesTerritoryCountry ORDER BY d.CalendarYear , d.CalendarQuarter , d.MonthNumberOfYear , st.SalesTerritoryGroup , st.SalesTerritoryRegion , st.SalesTerritoryCountry GOЛистинг 2. Создание функции SalesQuery
' Note that the line continuations are included only ' so that the code fits on the page. Public Function SalesQuery(ByVal YearFrom As Integer, ByVal YearTo As Integer, ByVal Country As String, ByVal MaxRows As Integer, ByVal IncludeFrieght As Boolean) As String Dim sSelect As String = «SELECT TOP» & MaxRows.ToString() _ & «CalendarYear, CalendarQuarter, MonthNumberOfYear,» _ & «MonthName, SalesTerritoryCountry,» _ & «SUM(SalesAmt) AS SalesAmt, SUM(OrderQty) AS OrderQty» Dim sFrom As String = «FROM vSalesByTimeAndTerritory» If IncludeFrieght Then sSelect &= «, SUM(Freight) AS Freight» Dim sWhere As String = «« If YearFrom -1 Then sWhere =»(CalendarYear BETWEEN «_ & YearFrom.ToString() _ &» AND «& YearTo.ToString() &») « If Country »All«Then If sWhere =»«Then sWhere &=»SalesTerritoryCountry = '«& Country &»' « Else sWhere &=» AND SalesTerritoryCountry = '«_ & Country &»' « End If End If If sWhere »«Then sWhere =»WHERE «& sWhere Dim sGroupBy As String =»GROUP BY CalendarYear, «_ &»CalendarQuarter, MonthNumberOfYear, MonthName, «_ &»SalesTerritoryCountry» Return sSelect & vbCrLf & sFrom & vbCrLf & sWhere _ & vbCrLf & sGroupBy End Function
www.osp.ru
Отчеты (SQL Server Reporting Services)
Эта документация перемещена в архив и не поддерживается.
Visual Studio 2015
Отчеты служб SQL Server Reporting Services позволяют анализировать ход выполнения и качество проекта. В этих отчетах объединяются метрики различных рабочих элементов, управления версиями, результаты тестов и сборки. В отчетах содержатся ответы на вопросы о фактическом состоянии проекта.
Большинство этих отчетов содержат фильтры, которые можно использовать для выбора содержимого, включаемого в отчет. Доступна фильтрация по периоду времени, путям итерации и путям к областям, типам рабочих элементов и состояниям рабочих элементов. Вопросы, ответы на которые содержатся в отчете, относятся ко всем типам рабочих элементов, таким как пользовательские Истории, тестовые случаи, задачи и ошибки.
Требования
Локальному развертыванию TFS должны быть предоставлены службы SQL Server Reporting Services. Эти отчеты недоступны, если домашняя страница Командный обозреватель не содержит ссылку на Отчеты.
Кроме того, для командного проекта должны быть предоставлены отчеты.
Информацию о том, как активировать службы Reporting Services в развертывании или добавить отчеты в существующий командный проект, см. здесь.
Для просмотра отчетов пользователю или группе, к которой принадлежит пользователь, должна быть назначена роль Обозреватель или Диспетчер содержимого Team Foundation в службах Reporting Services. Для получения дополнительной информации см. Grant permissions to view or create reports.
Отчеты о сборке отслеживают качество разрабатываемого программного обеспечения. Определив тесты, которые будут выполняться автоматически в составе определения сборки, и инструментировав их для сбора данных о покрытии кода, можно получить представление о качестве сборок, тестов и кода.
Руководство по тестированию и отслеживанию сборок, доступное для бесплатной загрузки, см. в разделе Testing for Continuous Delivery with Visual Studio 2012.
Пример отчета "Успех сборки за период времени"
Отчеты по управлению проектами дают представление об объеме работы, выполняемой командой в спринте или выпуске, а также о скорости выполнения проекта. Связывая рабочие элементы и обновляя определенные поля по мере выполнения работы, можно отследить ход выполнения отдельных историй и более точно оценить будущие действия.
Пример отчета по обзору историй
Отчеты о планировании тестирования поддерживают отслеживание хода выполнения теста и покрытия элементов невыполненной работы или пользовательских историй. Отчеты об отслеживании ошибок демонстрируют способность команды находить и устранять ошибки.
Пример отчета о ходе выполнения плана тестирования
Открыть отчет можно из Командный обозреватель, на портале командного проекта или на домашней странице любой команды на портале веб-доступа.
Откройте сайт отчетов со страницы Отчеты в Team Explorer.
Здесь показано представление отчетов для проекта Scrum в диспетчере отчетов.
Если в узле Отчеты в Командный обозреватель отображается красный значок X, это может указывать на то, что у вас нет разрешений на доступ к отчетам или что Командный обозреватель потерял связь с сервером, на котором размещены службы SQL Server Reporting Services. В этом случае нужно обратиться к администратору проекта и убедиться в наличии прав доступа к узлу отчетов, а также в том, что сервер, на котором размещены службы Reporting Services, работает надлежащим образом. Красный значок X может появляться в узле Отчеты при выполнении обоих следующих условий.
Для устранения этой проблемы войдите в систему на своем компьютере как администратор или откройте Internet Explorer, откройте свойства браузера, перейдите на вкладку Безопасность и снимите флажок Включить защищенный режим. |
Все данные, зафиксированные для рабочих элементов, записываются в хранилище данных WIT, но только выбранные данные записываются в хранилище данных служб аналитики. Хранилище данных типов рабочих элементов обновляется в режиме реального времени по мере создания и изменения рабочих элементов членами команды. Добавочные обновления затем записываются в реляционную базу данных хранилища и куб OLAP каждые 2 минуты и 2 часа. Чтобы изменить эти параметры, см. статью Change the Data Warehouse Refresh Frequency.
В таблице ниже описана процедура обновления отчета.
Кнопка "Обновить" в окне браузера | Обновляет отображаемые данные, используя отчет, хранящийся в кэше сеанса. Кэш сеанса создается сразу после открытия пользователем отчета. Службы Reporting Services используют сеансы браузера для поддержания согласованности просмотра, когда отчет открыт. |
При щелчке по этому значку сервер, на котором выполняются службы Reporting Services, повторно выполняет запрос и обновляет данные отчета, если отчет составляется по требованию. Если отчет хранится в кэше или в виде снимка, то отображается отчет, хранящийся в базе данных сервера отчетов. | |
Сочетание клавиш CTRL+F5 | Аналогично нажатию кнопки Обновить на панели инструментов отчета. |
При просмотре отчета в службах Reporting Services также можно выполнять следующие действия:
msdn.microsoft.com
создание отчёта и группировка строк
Создание отчёта в SQL Server Reporting Services
В интернете можно найти десятки уроков и статей, посвящённых созданию отчётов в SSRS. Вместо описания обычной последовательности действий: "Подключение к источнику->Выборка данных", я расскажу о некоторых приёмах, не очевидных для начинающего специалиста по отчётности:
- группировка строк в отчёте SSRS
- условное форматирование ячеек в SSRS
- как скрыть таблицу SSRS под кат
Подготовка данных
Для примера подготовим таблицу с данными:id_Сотрудника | Отдел | Премия |
190641 | 9 | 5200 |
190642 | 9 | 8060 |
190643 | 3 | 2080 |
190644 | 9 | 12400 |
190645 | 3 | 4400 |
190646 | 9 | 4290 |
190647 | 3 | 1200 |
190648 | 9 | 5800 |
190649 | 3 | 800 |
190650 | 3 | 1690 |
Пусть это данные о премиях для сотрудников на предприятии, причём данные доступны для двух отделов: отдела №3 и отдела №9.
Создание просто отчёта и группировка данных
Как вывести данные таблицы в отчёте SSRS? Сначала включим в отчёт таблицу "как есть". В проекте SSRS на вкладке Toolbox выбираем тип объекта, в котором будут выводится наши данные - Table:
В первую строку созданной таблицы вводим названия столбцов, во вторую строку - имена полей из созданного набора данных DataSet1:
Посмотрим, как выглядит созданный отчёт на сервере:
Начало положено!
Хотелось бы выводить фамилии сотрудников в алфавитном порядке, а так же отсортировать их по отделам. Как провести сортировку строк в отчёте SSRS?
В нижней части окна находим вкладку Row Groups и кликаем правой кнопкой мыши по названию группы (по умолчанию у нас одна группа), в контекстном меню выбираем пункт Group Properties
В появившемся окне на вкладке Sorting задаём поле, по которому производится группировка (Номер отдела) в поле Sort by и порядок сортировки (по возрастанию):
Отлично, теперь строчки в отчёте SSRS отсортированы. Однако, выводить номер отдела в каждой строчке не совсем наглядно. Как сделать заголовок для группы строк в SSRS?
Для этого изменим нашу табличку - сначала удалим столбец "Отдел" (он нам больше не понадобится).
После этого в нижней части окна найдём вкладку Row Groups и в контекстом меню выберем Add Group и тип группы Parent Group:
В появившемся окне укажем поле, по которому производим группировку (поле "Отдел") и выставим флажок "Add group header";
SSIS автоматически создаст родительскую группу (обратите внимание, на нашем элементе Tablix появились две вложенные скобки) и заголовок группы. Однако заголовок расположен неудобно - удалим созданный автоматически первый столбец таблицы (обратите внимание - саму группу удалять нельзя)
После этого объединим ячейки в первой строке
И добавим поле "Отдел" из нашего набора данных в первую строку таблицы. Теперь макет отчета SSIS выглядит следующим образом:
Всё готово! Теперь отчёте на сервере данные группируются по отделам, наш отчёт приобрёл следующий вид:
В следующем посте будут разобраны ещё два полезных приёма: условное форматирование ячеек в SSRS скрытие таблицы в SSRS под кат.
aleksandr-dzhumurat.blogspot.com