Raport, który ktoś musi uruchamiać ręcznie każdego ranka, po kilku tygodniach przestaje być uruchamiany. Subskrypcja w SQL Server Reporting Services przenosi ten obowiązek na serwer: zestawienie powstaje według harmonogramu i trafia do skrzynki albo na udział sieciowy. Pytanie dotyczy tego, które raporty z magazynu na to zasługują.
Spis treści
- Kiedy subskrypcja ma sens
- Jak działa subskrypcja w SSRS
- Kontrola subskrypcji w bazie serwera raportów
- Subskrypcja w obiegu magazynowym
- Subskrypcja sterowana danymi dla kontrahentów
- Wdrożenie i utrzymanie raportowania
- Pytania i odpowiedzi o subskrypcję raportów
- Glosariusz pojęć związanych z subskrypcją raportów
Kiedy subskrypcja ma sens
Subskrypcja pasuje do raportów o stałym rytmie i stałym odbiorcy. Kierownik zmiany chce rano zestawienia wydań z poprzedniej doby, a dział zakupów w poniedziałek chce listy przyjęć z całego tygodnia. Raport do analizy ad hoc, w którym filtry zmieniają się przy każdym uruchomieniu, lepiej zostawić do wykonania na żądanie.
| Raport | Odbiorca | Subskrypcja | Uzasadnienie |
|---|---|---|---|
| Dobowe zestawienie wydań | kierownik zmiany | tak, codziennie rano | stały rytm i stały odbiorca |
| Zestawienie dokumentów PZB z tygodnia | dział zakupów | tak, w poniedziałek | plik Excel do dalszej analizy bez logowania do systemu |
| Rozliczenie usług za miesiąc | kontrahent 3PL | tak, po zamknięciu okresu | jeden szablon, osobne parametry dla każdego klienta |
| Analiza rotacji z filtrami | analityk | nie | parametry zmieniają się przy każdej analizie |
| Lista kompletacji na zmianę | magazynier | nie | dane zmieniają się co minutę, a lista należy do terminala |
Jak działa subskrypcja w SSRS
Subskrypcja zapisuje dwie rzeczy: kiedy raport ma powstać i dokąd ma trafić. Do tego dochodzą wartości parametrów, które raport przyjmie przy wykonaniu. Serwer pobiera dane z bazy w chwili uruchomienia harmonogramu, więc odbiorca dostaje stan z tej godziny, a nie z momentu otwarcia wiadomości.
Dostarczanie odbywa się pocztą elektroniczną albo na udział plikowy. Format eksportu wybiera się w samej subskrypcji. Ten sam raport może trafić do kierownika jako PDF, a do księgowości jako plik CSV. Każda kombinacja formatu i odbiorcy to osobna subskrypcja z własnym harmonogramem i własnym wpisem w dzienniku wykonań.
| Kanał | Co otrzymuje odbiorca | Kontrola dostępu | Typowe zastosowanie |
|---|---|---|---|
| E-mail z załącznikiem | plik PDF albo Excel | kopia opuszcza serwer, uprawnień nie da się cofnąć | zestawienia dla zarządu i kontrahentów |
| E-mail z odnośnikiem | link do raportu na serwerze | odbiorca potrzebuje uprawnień do raportu | raporty z danymi wrażliwymi |
| Udział plikowy | plik w katalogu sieciowym | uprawnienia katalogu | archiwum i przekazanie pliku do innego programu |
Rozmiar załącznika ma znaczenie. Serwery poczty odrzucają wiadomości powyżej ustalonego limitu, a zestawienie z kilkudziesięcioma tysiącami wierszy w formacie Excel łatwo go przekracza. W takim przypadku subskrypcja z odnośnikiem albo zapis na udział plikowy działa pewniej niż załącznik, a ograniczenie zakresu dat w parametrach skraca raport bez utraty informacji.
Subskrypcja standardowa i sterowana danymi
Subskrypcja standardowa ma stałą listę odbiorców i stałe parametry. Subskrypcja sterowana danymi pobiera odbiorców oraz parametry z zapytania, więc jeden szablon rozliczenia może wygenerować osobny plik dla każdego kontrahenta. Ten wariant jest dostępny w edycjach Standard i Enterprise, które porównuje dokumentacja edycji SQL Server.
Parametry, które trzeba ustawić
- Harmonogram. Wykonanie codzienne albo tygodniowe, a także w wybrany dzień miesiąca. Harmonogram współdzielony pozwala przesunąć godzinę wielu raportów jedną zmianą.
- Zakres dat. Najlepiej zapisać go w raporcie jako wartość domyślną, na przykład dzień poprzedni, i w subskrypcji wybrać wartość domyślną. Stała data sprawi, że raport co rano pokaże ten sam dzień.
- Format. PDF służy do czytania i archiwizacji, Excel do dalszej obróbki, CSV do importu w innym programie.
- Poświadczenia. Subskrypcja wykonuje się na koncie zapisanym na serwerze raportów, nie na koncie odbiorcy. Źródło danych musi mieć zapisane poświadczenia.
Kontrola subskrypcji w bazie serwera raportów
Serwer raportów zapisuje subskrypcje i historię wykonań w swojej bazie, domyślnie o nazwie ReportServer. Administrator może sprawdzić, które subskrypcje zakończyły się błędem, bez otwierania portalu. Poniższe zapytanie jest ilustracyjne i dotyczy domyślnej konfiguracji trybu natywnego.
SELECT c.Path AS Raport,
s.DeliveryExtension AS Kanal,
s.LastRunTime,
s.LastStatus
FROM ReportServer.dbo.Subscriptions AS s
JOIN ReportServer.dbo.Catalog AS c ON c.ItemID = s.Report_OID
WHERE s.LastStatus NOT LIKE 'Mail sent%'
AND s.LastStatus NOT LIKE 'File%'
ORDER BY s.LastRunTime DESC;
Kolumna DeliveryExtension rozróżnia wysyłkę pocztową od zapisu na udział plikowy, a LastStatus zawiera treść ostatniego komunikatu. Szczegóły wykonań, w tym czas pobrania danych i renderowania, zapisuje widok ExecutionLog3 w tej samej bazie. Przy raportach z długim zapytaniem pomaga plan wykonania zapytania.
Reguła: w trybie natywnym harmonogram subskrypcji działa przez zadania SQL Server Agent, a edycja Express go nie zawiera. Obietnica raportu na skrzynce o szóstej rano wymaga więc decyzji o edycji przed wdrożeniem. Ograniczenia tej edycji opisuje strona o SQL Express w programie magazynowym.
Wynik zapytania warto ocenić po stronie odbiorcy, a nie tylko serwera. Subskrypcja, która wysyła pusty plik, bo w danym dniu nie było wydań, uczy odbiorców ignorowania wiadomości. Raport powinien w takim przypadku jasno pokazać komunikat o braku danych, a krytyczne zestawienia mogą mieć osobny temat wiadomości, po którym odbiorca rozpozna błąd wykonania.
Subskrypcja w obiegu magazynowym
Najlepiej sprawdzają się zestawienia powstające z dokumentów magazynowych, czyli przyjęć i wydań. Raport z listą wydań ma sens jako poranny przegląd, bo każde wydanie jest już zamknięte dokumentem, a liczby nie zmienią się po wysłaniu pliku. Proces wydania opisuje artykuł o wydaniu z magazynu, a pozostałe obszary raportowania opisuje obsługa magazynu.
Plik CSV zapisany na udziale może zasilić program księgowy, gdy wymiana danych nie przebiega bezpośrednio. Integrację z ERP opisuje strona o Subiekt nexo PRO z systemem WMS, a wszystkie kanały wymiany danych zestawia artykuł o komunikacji z programem magazynowym.
Kiedy subskrypcja szkodzi
Subskrypcje, których nikt nie czyta, obciążają bazę o każdej porze harmonogramu. Raz na kwartał warto przejrzeć ExecutionLog3 i sprawdzić, czy raporty o typie żądania Subscription mają odbiorców, którzy je otwierają. Zbędną subskrypcję usuwa się w minutę, a zapytanie, które codziennie czyta miliony wierszy, obciąża serwer przez cały rok.
Subskrypcja sterowana danymi dla kontrahentów
W magazynie kontraktowym jeden raport rozliczeniowy trafia do wielu klientów, a każdy powinien widzieć wyłącznie własne dane. Zapytanie dostarczające odbiorców zwraca po jednym wierszu na kontrahenta, a kolumny trafiają do ustawień dostarczania i do parametrów raportu. Poniższy przykład jest ilustracyjny i nie pokazuje struktury bazy produktu.
SELECT k.Email AS [TO],
k.KontrahentId AS KontrahentId,
'PDF' AS RenderFormat
FROM dbo.Kontrahenci AS k
WHERE k.Aktywny = 1
AND k.EmailRaportow IS NOT NULL;
W kartotece kontrahenta Studio WMS.net istnieje pole z adresem e-mail do automatycznych powiadomień, co widać na zrzucie poniżej. Taki adres jest naturalnym źródłem odbiorcy dla subskrypcji, bo dane klienta nie są wtedy powielane w ustawieniach serwera raportów.
Reguła: parametr identyfikujący kontrahenta musi wejść do klauzuli WHERE zapytania raportu, a nie tylko do filtru wyświetlania. Błąd w mapowaniu parametru wysyła klientowi dane innego klienta, a wysłanej wiadomości nie da się cofnąć.
Godziny harmonogramu i obciążenie serwera
Wszystkie subskrypcje ustawione na szóstą rano uruchamiają się jednocześnie i konkurują o to samo źródło danych. Harmonogramy warto rozłożyć w czasie, na przykład co dziesięć minut, oraz odsunąć od okna kopii zapasowej bazy. Raporty o dużym koszcie zapytania przenosi się na godziny, w których terminale w hali pracują najmniej intensywnie.
Przy rezygnacji z subskrypcji pomaga rozmowa z odbiorcą. Jeśli kierownik zmiany otwiera raport wydań dopiero po południu, harmonogram poranny nic nie daje, a wystarczy raport uruchamiany na żądanie z zapisanymi parametrami. Gdy ten sam plik otwiera pięć osób, jedna subskrypcja z udziałem plikowym zastępuje pięć wiadomości z załącznikami.
Wdrożenie i utrzymanie raportowania
SoftwareStudio wdraża i utrzymuje serwery raportów oparte na Microsoft SQL Reporting Services. Zakres obejmuje przygotowanie źródeł danych oraz konfigurację subskrypcji. Po uruchomieniu zespół monitoruje ich wykonanie. System raportowy jest częścią platformy opisanej na stronie Studio WMS.net.
Wcześniejszym etapem jest dobór wskaźników, które mają trafiać do odbiorców. Przykłady prognoz i analiz wspomaganych algorytmami opisuje artykuł o sztucznej inteligencji w logistyce, a ogólny obraz procesów magazynowych daje strona o gospodarce magazynowej.
Pytania i odpowiedzi o subskrypcję raportów
Subskrypcje są funkcją SQL Server Reporting Services i zależą od edycji SQL Server. Subskrypcje sterowane danymi wymagają edycji Standard albo Enterprise, a edycja Express nie obsługuje harmonogramów. Dokładny zakres warto sprawdzić przed zakupem w dokumentacji edycji.
Tak, serwer wykonuje zapytanie w momencie uruchomienia harmonogramu. Odbiorca dostaje stan z tej godziny, nawet jeśli otworzy wiadomość kilka godzin później. Gdy dane muszą być bardziej aktualne, raport uruchamia się na żądanie.
PDF nadaje się do czytania i archiwizacji, bo zachowuje układ strony. Excel jest właściwy dla odbiorcy, który dalej liczy na danych. CSV wybiera się wtedy, gdy plik trafia do importu w innym programie.
Serwer zapisuje komunikat w polu LastStatus subskrypcji i w dzienniku wykonań. Częstą przyczyną są nieaktualne poświadczenia źródła danych albo niedostępny serwer poczty. Administrator znajdzie je jednym zapytaniem do bazy serwera raportów.
Nie, subskrypcję tworzy się dla raportu już opublikowanego na serwerze. Report Builder służy do projektowania samego raportu. Odbiorca niczego nie instaluje i nie loguje się do systemu magazynowego.
Glosariusz pojęć związanych z subskrypcją raportów
- Subskrypcja raportu
- Zapisane na serwerze raportów zlecenie wykonania raportu według harmonogramu z wysyłką do wskazanych odbiorców.
- SSRS
- SQL Server Reporting Services, usługa serwerowa do projektowania, wykonywania i dostarczania raportów stronicowanych.
- Subskrypcja sterowana danymi
- Subskrypcja, w której odbiorców i wartości parametrów pobiera zapytanie, dzięki czemu jeden raport tworzy wiele wersji.
- Harmonogram współdzielony
- Definicja terminu wykonania używana przez wiele raportów, zmieniana w jednym miejscu.
- SQL Server Agent
- Usługa SQL Server uruchamiająca zadania według harmonogramu, z której korzystają subskrypcje w trybie natywnym.
- Udział plikowy
- Katalog sieciowy, do którego serwer raportów zapisuje wyeksportowany plik zamiast wysyłać go pocztą.
- Poświadczenia źródła danych
- Konto i hasło zapisane na serwerze, którymi raport łączy się z bazą podczas niezależnego od użytkownika wykonania.
- ExecutionLog3
- Widok w bazie serwera raportów z danymi o każdym wykonaniu raportu: czasie pobrania danych, przetwarzania i renderowania.