Raport, który trzeba otworzyć ręcznie, bywa otwierany tylko wtedy, gdy ktoś o nim pamięta. Reporting Services rozwiązują ten problem przez subskrypcje: serwer sam uruchamia raport o ustalonej godzinie i wysyła wynik do odbiorców. Kierownik dostaje zestawienie w skrzynce przed zebraniem, a nie po prośbie do analityka.
Artykuł opisuje Reporting Services z punktu widzenia dostarczania raportów. Omówiono raportowanie zarządcze, a następnie subskrypcje z harmonogramami oraz diagnostykę w bazie serwera i uprawnienia. Osobne sekcje dotyczą narzędzia Report Builder i raportowania w Configuration Manager. Architekturę samego serwera opisuje osobny tekst o serwerze raportów.
Reporting Services i raportowanie zarządcze
Raportowanie zarządcze obejmuje zestawienia, na podstawie których zarząd i kierownicy działów podejmują decyzje: sprzedaż w miesiącu, rentowność zleceń, zaległości w realizacji. Raport ma sens, gdy dwie osoby z różnych działów po jego otwarciu widzą te same liczby. Zapewnia to jedna definicja w Reporting Services, a nie kilka arkuszy liczących ten sam wskaźnik na własny sposób.
Usługi raportowania SQL Server pozwalają tworzyć raporty z danych w bazie, a potem publikować je i dystrybuować. Dokumentacja Microsoft opisuje je jako platformę do raportów stronicowanych i mobilnych, którą omawia strona Reporting Services w Microsoft Learn. Wybór między nimi a innymi narzędziami analitycznymi opisuje tekst o Microsoft SQL Reporting Services.
| Rodzaj raportu | Odbiorca | Częstotliwość | Sposób dostarczenia |
|---|---|---|---|
| Sprzedaż w podziale na produkty | dyrektor handlowy | tygodniowo | subskrypcja e-mailowa w formacie PDF |
| Rentowność zleceń | kontroling | miesięcznie | plik Excel w udziale sieciowym |
| Zaległości realizacji | kierownik operacyjny | codziennie rano | wiadomość z linkiem do raportu na serwerze |
| Bieżący dashboard | zarząd | na żądanie | otwarcie w przeglądarce, także na tablecie |
Reguła: wskaźnik zarządczy ma jedną definicję zapisaną w zapytaniu raportu. Kopiowanie jej do kilku raportów kończy się rozbieżnością wyników po pierwszej zmianie reguły.
Definicję wskaźnika najlepiej trzymać w widoku lub procedurze w bazie, a raport tylko ją wywołuje. Zmiana reguły dotyczy wtedy jednego obiektu, a nie dwudziestu plików RDL. Podejście do zapytań pod raporty opisuje artykuł o raportowaniu SQL od zapytania do serwera raportów.
- Definicja wskaźnika - wzór z jednostką i okresem liczenia, zapisane w widoku, a nie w polu raportu.
- Właściciel raportu - osoba odpowiedzialna za poprawność liczb i za decyzję o zmianie reguły.
- Odbiorcy - grupa w Active Directory, do której dostarcza się zestawienie.
- Termin dostarczenia - godzina, po której dane źródłowe są kompletne, na przykład po nocnym zamknięciu dnia.
Subskrypcje raportów w Reporting Services
Subskrypcja jest cyklicznym żądaniem dostarczenia raportu w określonym czasie albo w odpowiedzi na zdarzenie. Alternatywą jest raportowanie na żądanie, w którym użytkownik sam wybiera raport i parametry. Subskrypcja usuwa ten krok: serwer uruchamia raport za użytkownika, w wybranym formacie i terminie.
| Sposób uruchomienia | Kto inicjuje | Kiedy dane są pobierane | Zastosowanie |
|---|---|---|---|
| Na żądanie | użytkownik | w chwili otwarcia raportu | analiza ad hoc z własnymi parametrami |
| Subskrypcja standardowa | harmonogram serwera | w chwili uruchomienia subskrypcji | stały odbiorca i stałe parametry |
| Subskrypcja sterowana danymi | harmonogram serwera | w chwili uruchomienia, lista odbiorców z zapytania | wysyłka do wielu odbiorców z różnymi parametrami |
| Migawka wykonania | harmonogram serwera | w chwili utworzenia migawki | raport ciężki, czytany wielokrotnie w ciągu dnia |
Pełny opis typów subskrypcji i rozszerzeń dostarczania zawiera dokumentacja subskrypcji i dostarczania w Reporting Services. Subskrypcja sterowana danymi pobiera listę odbiorców i wartości parametrów z zapytania, więc jeden raport trafia do każdego handlowca z jego własnym zakresem. Dostępność tej funkcji zależy od edycji SQL Server.
Dostarczanie e-mailem i do udziału sieciowego
Rozszerzenia dostarczania określają miejsce docelowe wyniku. Wbudowane są dwa: wysyłka pocztą elektroniczną i zapis pliku w udziale sieciowym. Serwer raportów może dołączyć raport do wiadomości albo wysłać link, a plik w udziale nazywa się według wzorca z datą wykonania.
- E-mail - wymaga skonfigurowanego serwera SMTP w narzędziu konfiguracji Reporting Services i poprawnego adresu nadawcy.
- Udział sieciowy - wymaga konta, które ma prawo zapisu w katalogu docelowym, oraz ścieżki UNC dostępnej z serwera raportów.
Format wyniku wybiera się przy definicji subskrypcji: PDF do czytania i drukowania, Excel do dalszej obróbki, CSV do importu do innego systemu. Ten sam raport może mieć kilka subskrypcji w różnych formatach dla różnych odbiorców. Plik w formacie PDF zachowuje układ strony zdefiniowany w projekcie raportu, więc wygląda identycznie u każdego adresata.
Harmonogramy i zadania agenta
Harmonogram można zapisać przy jednej subskrypcji albo współdzielić między wieloma. Współdzielony harmonogram, na przykład „dni robocze o 6:00”, zmienia się w jednym miejscu i przesuwa wszystkie powiązane subskrypcje. Serwer realizuje harmonogramy jako zadania agenta SQL Server, więc usługa agenta musi działać.
Typowy objaw wyłączonego agenta to sytuacja, w której raport otwiera się ręcznie, a subskrypcje nie wychodzą. Diagnozę zaczyna się od stanu usługi agenta, a dopiero potem sprawdza definicję subskrypcji i wynik ostatniego uruchomienia. Konsola pokazuje status i czas ostatniego uruchomienia przy każdej subskrypcji.
Poświadczenia i parametry subskrypcji
Subskrypcja działa bez udziału użytkownika, więc serwer nie ma jego tożsamości Windows do połączenia ze źródłem danych. Źródło musi więc używać zapisanych poświadczeń albo konta nienadzorowanego wykonywania. Zapisane hasło wygasa razem z hasłem konta usługi w domenie, co bywa przyczyną nagłego zatrzymania wysyłek po zmianie polityki haseł.
Każdy parametr raportu bez wartości domyślnej musi dostać wartość w definicji subskrypcji. Brakująca wartość powoduje błąd wykonania, który nie jest widoczny dla odbiorców, bo wiadomość po prostu nie przychodzi. Dobrą praktyką jest nadawanie parametrom wartości domyślnych opartych na wyrażeniach, na przykład poprzedniego miesiąca.
Migawki i pamięć podręczna raportów
Raport, którego zapytanie trwa kilka minut, nie musi być liczony przy każdym otwarciu. Serwer potrafi zachować gotowy wynik i udostępniać go wielu użytkownikom, co odciąża bazę w godzinach szczytu. Dwa mechanizmy realizują tę ideę na różne sposoby.
Migawka wykonania jest tworzona według harmonogramu i zapisywana na serwerze, więc użytkownik zawsze czyta wynik z określonej chwili. Historia raportu przechowuje kolejne migawki do ustalonego limitu, co pozwala porównać stan magazynu z wczoraj i z dziś. Pamięć podręczna tworzy kopię przy pierwszym uruchomieniu raportu z danym zestawem parametrów i unieważnia ją po ustalonym czasie.
Reguła: raport z migawką albo z pamięcią podręczną pokazuje dane z chwili jej utworzenia. Odbiorca musi widzieć w nagłówku datę wykonania, żeby nie odczytać wczorajszego stanu jako bieżącego.
Wszystkie subskrypcje ustawione na tę samą godzinę, na przykład 6:00, tworzą szczyt obciążenia serwera raportów i bazy. Rozłożenie harmonogramów co kilka minut skraca czas oczekiwania w kolejce i zmniejsza ryzyko przekroczenia limitu czasu zapytania. Raporty najcięższe ustawia się na okno nocne, a lekkie na godziny poranne.
Diagnostyka subskrypcji w bazie serwera
Serwer raportów w trybie natywnym przechowuje definicje raportów i subskrypcje oraz dziennik wykonań w bazie o domyślnej nazwie ReportServer. Opis struktury zawiera dokumentacja bazy serwera raportów w trybie natywnym. Zapytanie do tabeli subskrypcji pokazuje status ostatniego uruchomienia bez otwierania konsoli.
SELECT c.Path, s.Description, s.LastRunTime, s.LastStatus
FROM ReportServer.dbo.Subscriptions AS s
JOIN ReportServer.dbo.Catalog AS c ON c.ItemID = s.Report_OID
ORDER BY s.LastRunTime DESC;
SELECT TOP (20) ItemPath, TimeStart, TimeDataRetrieval,
TimeProcessing, TimeRendering, [RowCount]
FROM ReportServer.dbo.ExecutionLog3
ORDER BY TimeStart DESC;
Widok ExecutionLog3 rozbija czas raportu na pobieranie danych oraz przetwarzanie, a osobno na renderowanie. Gdy dominuje pobieranie, problemem jest zapytanie i jego indeksy. Gdy dominuje renderowanie, raport zwraca zbyt wiele wierszy do wyświetlenia albo ma zbyt złożony układ.
| Objaw | Prawdopodobna przyczyna | Sprawdzenie |
|---|---|---|
| Subskrypcje nie wychodzą, ręczne uruchomienie działa | zatrzymana usługa agenta SQL Server | stan usługi i historia zadań agenta |
| Błąd wysyłki e-mail | niepoprawna konfiguracja SMTP albo odrzucony adres | ustawienia poczty w narzędziu konfiguracji |
| Błąd zapisu do udziału | brak uprawnień konta do katalogu docelowego | test zapisu z konta usługi na ścieżce UNC |
| Błąd logowania do źródła danych | wygasłe poświadczenia zapisane w źródle | test połączenia w definicji źródła |
Uprawnienia do raportów i folderów
Dostęp do raportów nadaje się przez przypisanie użytkownika lub grupy do roli na folderze. W trybie natywnym role obejmują między innymi Browser do przeglądania, Content Manager do zarządzania zawartością oraz Publisher do publikowania. Uprawnienia dziedziczą się po folderze, więc raporty działu sprzedaży trzyma się w jednym folderze z przypisaną grupą handlową.

Rozsądny układ folderów odzwierciedla strukturę organizacji, a nie strukturę techniczną. Grupy Active Directory zastępują listy pojedynczych kont, dzięki czemu zmiana działu pracownika nie wymaga edycji uprawnień w Reporting Services. W aplikacjach SoftwareStudio administrator dodatkowo definiuje menu raportów, tak by użytkownik widział tylko zestawienia ze swojego zakresu, co opisuje strona o raportowaniu HermesSQL w Studio Raporty.
Poza rolami na elementach istnieją role na poziomie całego serwera, takie jak administrator systemu i użytkownik systemu. Pierwsza pozwala zmieniać konfigurację i harmonogramy współdzielone, druga przeglądać ustawienia i uruchamiać raporty. Dostęp administracyjny ogranicza się do kilku osób, bo pozwala odczytać każdy raport, także z danymi z innych działów.
Reguła: rola administratora systemu trafia do osób odpowiedzialnych za serwer raportów, a nie do autorów raportów. Autor potrzebuje uprawnień do własnego folderu, a nie do konfiguracji serwera.
Osobną kwestią są uprawnienia do samej bazy danych. Raport uruchamiany przez użytkownika może łączyć się ze źródłem kontem użytkownika albo kontem wspólnym zapisanym w źródle danych. Konto wspólne upraszcza zarządzanie, ale wymaga, by ograniczenie wierszy widocznych dla danego odbiorcy wykonać w zapytaniu raportu na podstawie identyfikatora użytkownika.
Report Builder i publikacja na serwerze
SoftwareStudio tworzy raporty w narzędziu Microsoft Report Builder. Program ma interfejs graficzny w stylu pakietu Office, więc osoby znające Excela szybko składają tabele i wykresy z gotowych składników i szablonów. Raport zapisany w formacie RDL publikuje się na serwerze, gdzie odbiorcy uruchamiają go w przeglądarce albo jako aplikację kliencką na stacji roboczej w sieci.
Bardziej złożone raporty, z zagnieżdżonymi tabelami i nawigacją między raportami, projektuje się w SQL Server Data Tools. To środowisko wspiera pracę z projektem w repozytorium i wdrażanie na wiele serwerów. Porównanie obu narzędzi znajduje się w artykule o SQL Report Builder i raportach RDL.
Źródło danych może być osadzone w raporcie albo współdzielone na serwerze. Źródło współdzielone zmienia się w jednym miejscu, gdy baza przenosi się na inny serwer, więc raporty nie wymagają wtedy edycji jeden po drugim. Zestawy danych opierają się na procedurach składowanych z parametrami, a raport przekazuje im wartości wybrane przez odbiorcę.
Reguła: źródło danych używane przez wiele raportów jest współdzielone. Osadzone źródło w każdym raporcie oznacza ręczną zmianę parametrów połączenia przy każdej migracji bazy.
Nawigacja i filtrowanie w raporcie pozwalają dostosować go do konkretnego obszaru tematycznego. Użytkownik przechodzi z zestawienia sumarycznego do szczegółów jednym kliknięciem, bez osobnego raportu na każde pytanie. Szersze zastosowanie serwera raportów w rozwiązaniach firmy opisuje strona o Reporting Services w rozwiązaniach SoftwareStudio.

Raporty na urządzeniach mobilnych wymagają układu, który skaluje się do małego ekranu, oraz dostępu przez adres w sieci firmowej lub przez VPN. Przy subskrypcjach e-mailowych odbiorca otwiera plik PDF, więc układ pozostaje taki jak na papierze. Raporty mobilne i zapytania SQL Server opisuje osobny tekst o SSRS i kwerendach SQL Server.
Raportowanie w Configuration Manager
Configuration Manager korzysta z Reporting Services do raportowania o zasobach i oprogramowaniu oraz o zgodności urządzeń w organizacji. Raporty są uruchamiane przez rolę systemu witryny, która łączy konsolę z serwerem raportów. Zestaw obejmuje wiele wstępnie zdefiniowanych raportów, które można kopiować i dostosowywać do potrzeb organizacji.
Subskrypcjami raportów zarządza się z konsoli Configuration Manager. Administrator definiuje i edytuje subskrypcje, a także monitoruje ich wykonanie, a serwer raportów przetwarza je i dystrybuuje przez rozszerzenia dostarczania. Wynik trafia do wskazanego folderu udostępnionego albo pod adres e-mail, co pozwala utrzymać cykliczne zestawienie o stanie zasobów bez ręcznego uruchamiania.
Sposób raportowania o zasobach IT dobrze ilustruje ogólną zasadę tego artykułu: definicja raportu leży na serwerze, harmonogram uruchamia ją bez udziału człowieka, a odbiorca dostaje wynik w wybranym formacie. Ten sam mechanizm stosuje się do raportów magazynowych, o czym mówi artykuł o raportowaniu w systemie WMS z użyciem KPI i SSRS. Wsparcie we wdrożeniu raportowania na SQL Server oferuje zespół SoftwareStudio, a demonstracje systemów udostępnia serwis demo.softwarestudio.com.pl.




