SSRS: Uruchamianie subskrypcji raportu tylko, gdy raport nie jest pusty

17-mar-2015

Reporting Services pozwala na zautomatyzowanie wysyłania raportów dla użytkowników. Czasami jednak zdarza się, że raport, który ma być dostarczony jest pusty, lub się nie zmienił od poprzedniego razu. W aktualnej wersji SSRS nie ma opcji, która by to uwzględniała. Trzeba się odwołać do sztuczek.

Utwórz raport i schedule, który się już nie będzie automatycznie uruchamiał. W tym momencie SSRS tworzy job w SQL Agent, który uruchamia się wg schedule. Nazwa tego joba jest niezbyt przyjaznym UID-em
Stwórz własny job, który sprawdza, czy raport ma być wykonany. Wbuduj tu własną logikę. Sprawdź czy dane są, albo czy się zmieniły itp. Jeżeli warunek jest spełniony uruchom job stworzony przez SSRS!
Polecenie, które pozwoli skojarzyć konkretny raport z jobem:

 

            SELECT
                        Sch.ScheduleId AS  'Name of Job’,
                        Sch.LastRunTime,
                        U.UserName AS 'Created by’,
                        Cat.Name AS 'Report name’
            FROM [dbo].[Schedule]   Sch
            JOIN  [dbo].[ReportSchedule]  RSch ON Sch.ScheduleId = Sch.ScheduleId
            JOIN  [dbo].[Catalog] Cat ON Cat.ItemId =  RSch.ReportId
            JOIN dbo.Users U ON Sch.CreatedById = U.UserId 

Do uruchomienia joba z wykorzystaniem TSQL można wykorzystać następujący fragment kodu:

USE msdb ;
GO
EXEC dbo.sp_start_job N’Weekly Sales Data Backup’ ;
GO

Szczegóły dot. uruchamiania jobów z TSQL: https://msdn.microsoft.com/en-us/library/ms190774.aspx

Komentarze są wyłączone

Autor: Rafał Kraik