SSRS 2016报告时间表 - T-SQL触发器

问题描述:

我已经建立了几个SSRS订阅这是在通过按需运行(这只是触发预先存在的时间表)SSRS 2016报告时间表 - T-SQL触发器

EXEC msdb.dbo.sp_start_job = '0B5B5AB1-F475-4478-A3DA-3D602C4FDA4C' 

我会非常喜欢do有一个SSRS订阅,我可以通过存储过程多次传递不同的参数值,目前这些值是在订阅本身中设置的。

作为一个例子,我有一个@Client参数和3级的客户端123,124和125

所以我运行将执行SSRS订阅并通过指定的参数的存储过程的报告。即 - 123例如下─

EXEC msdb.dbo.sp_start_job = '0B5B5AB1-F475-4478-A3DA-3D602C4FDA4C' @Client = 123 

但是我无法找到,将工作

我可能没有完全理解你的问题的方法,所以提前道歉,如果我带你下了兔子洞。话虽如此..

鉴于你的情况,这是我将如何设置我的报告和他们的订阅。

我会将参数@Client放在报表中,并从表格中获取它的值,我们称它为Client_Table,其中包含一个属性ClientCode,这将驱动报表中选择的数据。

然后,我会创建一个存储过程,其中将嵌套EXEC msdb.dbo.sp_start_job = '0B5B5AB1-F475-4478-A3DA-3D602C4FDA4C',但会截断包含@Client值的表,仅用于您希望特定执行报表的客户机。像这样的东西..

create proc ProcNameHere @ClientID int 

as 

truncate table Client_table --Truncate values from previous run 

Insert Client_Table 
Select @ClientID --add ClientID for this run 

EXEC msdb.dbo.sp_start_job = '0B5B5AB1-F475-4478-A3DA-3D602C4FDA4C' -- run the report that takes clientid from Client_ID table 

让我知道这是你的意思。

通过这种方式,您可以使用EXEC ProcNameHere '123'为客户端123运行报表,因为这将成为报表中唯一驱动客户端选择的表中的唯一条目。

+0

是的,你已经理解了我,周末有了一个顿悟,并提出了非常相似的东西!创建一个默认参数表,然后更改平面表上游标中每个参数的值,以便每次预订运行时,默认参数都已更改。 – XDSA5286

+0

太棒了!很高兴它解决了。 – Herman