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