SSRS автоматически создает отчеты из списка

У нас есть отдельный список партийных ключей (примерно 20000), и каждую неделю мы создаем отчеты только для определенных партийных ключей, для которых есть обновления. Эти партийные ключи хранятся в списке периодических проверок.

Список периодических проверок = ключи партии, которые обновлены

Так, например, 1-я неделя 180 партийных ключей 2-я неделя 300 партийных ключей 3-я неделя 30 партийных ключей в списке периодического просмотра.

Итак, сейчас у меня есть отчет SSRS, в котором есть параметр с именем Party key, и, вручную введя ключ Party, он сгенерирует отчет.

но я хочу автоматизировать процесс и хотел бы автоматически генерировать отчеты для определенных партийных ключей, которые имеют обновления и хранятся в общей папке в формате PDF.

если на этой неделе у них есть 40 ключей сторон в списке проверки, я хочу создать 40 отчетов SSRS для этих ключей.


Microsoft Visual Studio Enterprise 2015 Версия 14.0.25420.01 Обновление 3 Microsoft .NET Framework Версия 4.7.02053

Инструменты данных SQL Server 14.0.61021.0 Инструменты данных Microsoft SQL Server

Службы отчетов SQL Server 13.0.1701.8 Конструкторы служб отчетов Microsoft SQL Server Версия 13.0.1701.8

1 ответ

Если у вас есть доступ к базе данных отчетов, вы можете легко обновить параметр подписки на новый ключ из вашего списка и запустить задание, которое отправляет эту подписку. По сути, у вас может быть какое-то задание, которое берет последний обработанный ключ, находит все новые ключи, обновляет подписку, запускает задание подписки для каждого нового ключа.

Вот мой запрос, где вы можете найти ссылку между подпиской и именем работы:

SELECT     
 s.subscriptionid,
 ISNULL(c_p.Name, c.Name) AS Report, 
 msdb.dbo.sysjobs.name AS SQLAgentName, 
 CASE WHEN c.Type = 4 THEN c.Name + ' [' + s.Description + ']' ELSE s.Description end AS Description, 
MAX(s.LastRunTime) AS LastRun, s.LastStatus, 
                      s.DeliveryExtension, c.Description AS HowOften, msdb.dbo.sysjobs.job_id, msdb.dbo.sysjobs.enabled
FROM  dbo.Catalog AS c 
 LEFT JOIN dbo.Catalog AS c_p
  ON c_p.ItemID = c.LinkSourceID AND c.Type = 4
INNER JOIN dbo.Subscriptions AS s 
  ON s.Report_OID = c.ItemID 
INNER JOIN dbo.ReportSchedule 
 ON c.ItemID = dbo.ReportSchedule.ReportID 
    AND s.SubscriptionID = dbo.ReportSchedule.SubscriptionID 
INNER JOIN msdb.dbo.sysjobs 
ON CAST(dbo.ReportSchedule.ScheduleID AS varchar(100)) 
   = CAST(msdb.dbo.sysjobs.name AS varchar(100))
where msdb.dbo.sysjobs.enabled = 1
GROUP BY s.subscriptionid, c_p.Name, c.type, c.Name, msdb.dbo.sysjobs.name, s.Description, s.LastStatus, s.DeliveryExtension, c.Description, msdb.dbo.sysjobs.job_id, msdb.dbo.sysjobs.enabled

Изменить параметры dbo.Subscription и вызвать exec msdb.dbo.sp_start_job @job_name = @JobName; чтобы завершить вашу задачу.

Другие вопросы по тегам