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

问题描述 投票:1回答:1

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

我目前的方法是有一个只有一些用户可以看到的文本框,然后单击文本框会触发订阅。我是这样做的:

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

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

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

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

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

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

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

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

reporting-services subscription ssrs-2016 data-driven
1个回答
0
投票

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

 SELECT HOST_ID(), HOST_NAME()

要么

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

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