触发SSRS数据驱动订阅 - 提供参数

时间:2018-02-14 21:45:28

标签: reporting-services subscription ssrs-2016 data-driven

我有一份接受日期参数的SSRS(2016)报告。用户选择日期并运行报告并为每个客户返回一页。该报告还有一个数据驱动的订阅,当触发时,通过电子邮件发送与客户相关的输出。

我目前的做法是设置一个只有部分用户可以看到的文本框,然后点击文本框才会触发订阅。我是这样做的:

当用户点击“查看报告”按钮时,将用户选择的参数插入表格,然后使用以下内容触发订阅:

EXEC msdb.dbo.sp_start_job @job_name ='job name to be sent out'

订阅/报告的数据集然后使用插入表中的参数来完成它。一切正常。

当多个人运行报告时出现问题..第二人触发器可能会过度写入第一个人参数插入,导致发送错误的数据集。

我的问题是..是否有更好的方法来触发数据驱动的订阅,其中报告需要参数值 - 但参数值无法预先确定?

如果我的方法可以接受,我怎样才能消除参数值的覆盖?

更好的是,我如何确定正确的参数并将其传递给订阅?例如会话ID /用户ID ..等等,

欢迎任何想法或替代实施。

1 个答案:

答案 0 :(得分:0)

之前我遇到过同样的问题,在处理其他用户的过程中会覆盖默认表值。我解决它的方法是在HOST_ID或HOST_NAME的默认表中添加一列。这有点痛苦,因为你已经将该参数传递给报告。

 SELECT HOST_ID(), HOST_NAME()

OR

在报表参数中,您可以使用以下表达式默认值来获取当前用户。

 =Right(User!UserID, Len(User!UserID)-instr(User!UserID, "\"))
  • 注意:如果将此设置为报表变量,则数据驱动的订阅将失败。作为参数,它将起作用。