如何在 s-s-rS 订阅的主题行中包含报告参数?
Posted
技术标签:
【中文标题】如何在 s-s-rS 订阅的主题行中包含报告参数?【英文标题】:How do I include report parameters in an s-s-rS subscription's subject line? 【发布时间】:2014-07-07 15:56:33 【问题描述】:我有一份显示指定日期数据的报告。该报告每天运行,并通过电子邮件将副本发送给收件人。电子邮件的默认主题是“@ReportName 在@ExecutionTime 执行”。我不想包含执行日期,而是希望包含报告数据的日期,该日期在名为 @date 的参数中可用。
如何在订阅电子邮件的主题行中包含报告参数的值?
【问题讨论】:
【参考方案1】:我建议您研究数据驱动订阅。基本上,它们允许您编写查询来设置参数值并定义可用于主题行、消息正文等的附加列。这是一个有用的资源:
Data-driven subscriptions in s-s-rS 2008 R2,其中包含一些在使用数据驱动订阅时需要牢记的额外信息另外,我应该指出,数据驱动订阅仅适用于特定版本的 SQL Server(评估版、开发版、企业版)。
【讨论】:
感谢您的建议。我已经阅读了很多关于数据驱动订阅的文档,虽然它们允许您在运行时构建主题行,但似乎它们不允许您在电子邮件中使用报告参数。谢谢你的帮助。我为你的时间投了赞成票。 您确实无法从报告中提取内部参数,但您可以将默认值的逻辑放在 DDS 中,并在那里设置您的参数和主题。不确定您的 @date 参数是如何设置的(因此在这种情况下,这可能是一个选项,也可能不是) 这就是我最终编写它的方式——将默认参数的逻辑放在 DDS 中以在主题行中使用。逻辑并不复杂,但我担心,将来我们可能会改变逻辑,而没有意识到必须在两个地方改变它。无论如何,让对 s-s-rS 更有经验的人认为这是解决此问题的常用方法会有所帮助。感谢您的帮助。 @MichaelVenable 解决您对未来默认日期(或任何参数默认值)逻辑更改的担忧,您可以创建一个数据库对象,为您的报告返回默认值,然后使用s-s-rS 报告和数据驱动订阅中的该数据库对象,以获取报告的默认日期。这样,如果它在一个地方更新,它会自动更新您的报告和订阅。 我找到了这个答案,但是第一个链接已经失效。建议直接在答案中添加内容或考虑删除,因为它不再完整。【参考方案2】:使用 s-s-rS 似乎无法在电子邮件订阅的主题行中包含报告参数的值。数据驱动订阅允许您在运行时动态构建主题行,但它不允许您查询参数并将其插入主题行。据我所知,这是不可能的。
【讨论】:
【参考方案3】:不使用订阅应该是可能的,但是例如从 SSIS 到 * 呈现 s-s-rS 报告并保存,例如作为 html 文件, * 创建一封电子邮件并将报告中的文件放入正文或作为附件, * 并设置电子邮件主题。这再次面临从呈现的报告中读出值或参数的挑战,我目前没有答案。但是在这里您拥有包括 .net 在内的所有方法,因此应该是可能的。
迈克
【讨论】:
【参考方案4】:参数值可在 ReportServer 数据库的 dbo.Subscriptions 表的参数字段中找到。如果您使用参数字段中的值更新 ExtensionSettings 字段的主题部分,则无需购买企业许可证即可实现此目的。请记住 ExtensionSettings 是 ntext,因此您需要 CAST 到 NVARCHAR(MAX) 才能执行 REPLACE() 语句。
【讨论】:
以上是关于如何在 s-s-rS 订阅的主题行中包含报告参数?的主要内容,如果未能解决你的问题,请参考以下文章