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运行报表,因为这将成为报表中唯一驱动客户端选择的表中的唯一条目。
是的,你已经理解了我,周末有了一个顿悟,并提出了非常相似的东西!创建一个默认参数表,然后更改平面表上游标中每个参数的值,以便每次预订运行时,默认参数都已更改。 – XDSA5286
太棒了!很高兴它解决了。 – Herman