我设置了几个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
然而,我找不到一个可行的方法
答案 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运行报表,因为这将是表中唯一一个在报表中驱动客户端选择的条目。