1

我有一个以本机模式运行的 SSRS 2008 服务器。我试图弄清楚以下是否可行,如果可以,该怎么做。我想要一个计划订阅,仅在满足某些条件时生成报告。对我来说,表达条件的最自然方式是特定查询是否返回数据。这可能吗?

所以基本上我会定期检查数据库,如果有一些数据(比如在错误日志中)发送一封关于它的电子邮件。

经过更多研究后,我发现了这个链接: http: //blogs.msdn.com/b/bimusings/archive/2005/07/29/445080.aspx 在评论中人们提供了以下技巧:

IF NOT EXISTS ( SELECT * FROM ....)

RAISEERROR('no records found,'16,1

ELSE

SELECT * FROM ....

我可以使用它来生成要发送的电子邮件或引发错误。问题是我的报告包含在存储过程中,您不能将 IF NOT EXISTS 与存储过程一起使用。是否有人对如何检查存储过程是否返回行而不将其放入临时表或执行它并查看@@rowcout 有任何建议?最后一个对我不利,因为我无法将程序的输出与电子邮件一起返回。

4

2 回答 2

1

您正在寻找数据驱动的订阅。从那个 MSDN 文档:

Reporting Services 提供数据驱动的订阅,以便您可以根据动态订阅者数据自定义报表的分发。数据驱动订阅适用于以下类型的场景:

• 将报告分发到一个大型收件人池,其成员资格可能会从一个分发更改为下一个分发。例如,向所有当前客户分发月度报告。

• 根据预定义的标准将报告分发给特定的一组收件人。例如,将销售业绩报告发送给组织中的前十名销售经理。

并非所有 SSRS 版本都支持数据驱动订阅,因此请务必检查您的版本是否支持。

我没有用它做太多工作,但 AFAIK 它应该满足您的要求。从相关/相关的 MSDN 页面

使用数据驱动订阅在运行时自定义报告输出、交付选项和报告参数设置。订阅使用查询在运行时从数据源获取输入值。您可以使用数据驱动订阅来执行邮件合并操作,该操作将报告发送到订阅处理时确定的订阅者列表。

看来这就是你所追求的。

于 2013-05-03T14:19:16.080 回答
1

您实际上可以使用 TSQL 命令触发 SSRS 报告。我有一个计划定期运行的脚本,并执行一些 SQL 操作来决定它是否应该运行特定的 SSRS 报告。那应该对你有用。您所做的很好是报告的 id,然后像任何其他工作一样执行它 - 我建议您查看计划的 SSRS 报告以查看参数在数据库中的样子,以便您可以正确调用它。

于 2013-05-03T15:45:30.413 回答