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

SSRS 2016 Report Schedule - T-SQL trigger

我设置了几个 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

但是我找不到可行的方法

我可能没有完全理解你的问题,所以如果我让你陷入困境,请提前道歉。话虽如此..

鉴于您的情况,这就是我设置报告及其订阅的方式。

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

然后我将创建一个存储过程,其中将嵌套 EXEC msdb.dbo.sp_start_job = '0B5B5AB1-F475-4478-A3DA-3D602C4FDA4C',但会 运行cate 包含 @Client 值的 table,仅针对您希望为其执行特定报告的客户。像这样的..

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 的报告,因为这将是 table 中唯一在报告中驱动客户选择的条目.