SSRS 2016报告计划 - T-SQL触发器

时间:2017-06-02 14:23:16

标签: sql sql-server-2016 ssrs-2016

我设置了几个SSRS订阅,这些订阅是按需运行的(这只会触发预先存在的时间表)

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

我理想的做法是拥有一个SSRS订阅,我可以通过存储过程多次使用不同的参数值传递,目前这些值是在订阅本身中设置的。

例如,我的报告包含@Client个参数和3个客户端,123,124和125.

所以我运行一个存储过程来执行SSRS订阅并传递指定的参数。即 - 123.以下示例 -

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

然而,我找不到一个可行的方法

1 个答案:

答案 0 :(得分:0)

我可能没有完全理解你的问题,如果我把你带到兔子洞,请提前道歉。说完了..

根据您的情况,这就是我设置报告和订阅的方式。

我会在报告中放置参数@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运行报表,因为这将是表中唯一一个在报表中驱动客户端选择的条目。