Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如果数据库中有任何新的更新,请创建多个SSRS报告_Sql_Visual Studio_Reporting Services_Ssrs 2012_Ssis 2012 - Fatal编程技术网

Sql 如果数据库中有任何新的更新,请创建多个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

我们正在生成SSRS报告,ID有1个参数,手动输入ID将生成SSRS报告

要求: 如果数据库中有任何新ID,或数据库中有任何更新,我们希望为该特定ID创建SSRS报告


我们每周运行此报告,例如,如果有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存储在表中,然后将任何新结果返回给数据驱动订阅。