Sql 如果数据库中有任何新的更新,请创建多个SSRS报告
我们正在生成SSRS报告,ID有1个参数,手动输入ID将生成SSRS报告 要求: 如果数据库中有任何新ID,或数据库中有任何更新,我们希望为该特定ID创建SSRS报告Sql 如果数据库中有任何新的更新,请创建多个SSRS报告,sql,visual-studio,reporting-services,ssrs-2012,ssis-2012,Sql,Visual Studio,Reporting Services,Ssrs 2012,Ssis 2012,我们正在生成SSRS报告,ID有1个参数,手动输入ID将生成SSRS报告 要求: 如果数据库中有任何新ID,或数据库中有任何更新,我们希望为该特定ID创建SSRS报告 我们每周运行此报告,例如,如果有15个ID的更新,我们希望这些特定ID有15个新的SSRS报告。您可以创建一个触发器或过程,截断更改并将其输入到“更改”表中,按所需计划运行此报告 创建一个数据驱动订阅,从该“更改”表中读取数据 在Insert语句之后,执行REPORTCOMAND脚本,该脚本将触发报表运行 SELECT DIST
我们每周运行此报告,例如,如果有15个ID的更新,我们希望这些特定ID有15个新的SSRS报告。您可以创建一个触发器或过程,截断更改并将其输入到“更改”表中,按所需计划运行此报告 创建一个数据驱动订阅,从该“更改”表中读取数据 在Insert语句之后,执行REPORTCOMAND脚本,该脚本将触发报表运行
SELECT DISTINCT b.job_id,
'EXEC ReportServer.dbo.AddEvent @EventType=''TimedSubscription'', @EventData='''
+ CAST(a.SubscriptionID AS VARCHAR(40)) + '''' AS ReportCommand ,
e.Name,
b.name AS JobName ,
a.SubscriptionID ,
e.Name ,
e.Path ,
d.Description ,
d.LastStatus,
d.LastRunTime
FROM ReportServer.dbo.ReportSchedule a
JOIN msdb.dbo.sysjobs b ON a.ScheduleID = b.name
JOIN ReportServer.dbo.ReportSchedule c ON b.name = CONVERT(VARCHAR(50),c.ScheduleID)
JOIN ReportServer.dbo.Subscriptions d ON c.SubscriptionID = d.SubscriptionID
JOIN ReportServer.dbo.Catalog e ON d.Report_OID = e.ItemID
WHERE e.Path LIKE '%path%'
EXEC ReportServer.dbo.AddEvent @EventType='TimedSubscription', @EventData='123214134-13242-4890-A3D3424-D23423D17E6CBD'
您可以创建一个触发器或过程来截断更改并将其输入到一个“changes”表中,然后按所需的时间表运行它 创建一个数据驱动订阅,从该“更改”表中读取数据 在Insert语句之后,执行REPORTCOMAND脚本,该脚本将触发报表运行
SELECT DISTINCT b.job_id,
'EXEC ReportServer.dbo.AddEvent @EventType=''TimedSubscription'', @EventData='''
+ CAST(a.SubscriptionID AS VARCHAR(40)) + '''' AS ReportCommand ,
e.Name,
b.name AS JobName ,
a.SubscriptionID ,
e.Name ,
e.Path ,
d.Description ,
d.LastStatus,
d.LastRunTime
FROM ReportServer.dbo.ReportSchedule a
JOIN msdb.dbo.sysjobs b ON a.ScheduleID = b.name
JOIN ReportServer.dbo.ReportSchedule c ON b.name = CONVERT(VARCHAR(50),c.ScheduleID)
JOIN ReportServer.dbo.Subscriptions d ON c.SubscriptionID = d.SubscriptionID
JOIN ReportServer.dbo.Catalog e ON d.Report_OID = e.ItemID
WHERE e.Path LIKE '%path%'
EXEC ReportServer.dbo.AddEvent @EventType='TimedSubscription', @EventData='123214134-13242-4890-A3D3424-D23423D17E6CBD'
根据您的示例,您可以在每次运行报告时将生成报告的ID存储在表中。然后,当你下周重新运行它时,它会找到所有的newId并为它们运行。或者,您可以根据上次运行报告的时间戳执行类似的查询,并在记录上创建日期,查找上次运行报告后创建的记录 由于不知道报表的作用,因此,与其为1个id运行一次报表,不如为多个id运行报表,并使用分页符
或者循环检查每个ID,调整reportServer数据库中订阅元数据中的条件,然后执行订阅创建的SQL代理作业,以生成具有新ID的新报告。根据您的示例,您可以在每次运行报告时将生成报告的ID存储在表中。然后,当你下周重新运行它时,它会找到所有的newId并为它们运行。或者,您可以根据上次运行报告的时间戳执行类似的查询,并在记录上创建日期,查找上次运行报告后创建的记录 由于不知道报表的作用,因此,与其为1个id运行一次报表,不如为多个id运行报表,并使用分页符
或者循环检查每个ID,调整reportServer数据库中订阅元数据中的条件,然后执行订阅创建的SQL代理作业,以生成具有新ID的新报告。与其他人所说的类似,我将创建一个过程,将报告的ID存储在表中,然后将任何新结果返回给数据驱动订阅。与其他人所说的类似,我将创建一个过程,将报告的ID存储在表中,然后将任何新结果返回给数据驱动订阅。