2009-08-26 107 views
1

我们的应用程序使用SQL Server Reporting Services,并允许用户为报告添加自定义过滤器。我们通过修改RDL然后将修改后的RDL上载到服务器来创建新报告来完成此操作。问题是报告运行一次之后,就不再需要了;这实际上只是一个临时报告。显然,这最终会导致很多临时报告的出现。我们需要一种方法来清理这些。清理临时SSRS报告

我们已经想过创建服务或作业等外部方法来定期删除报告,如果我们不能提出更好的解决方案,那很可能就是我们最终要做的。我们想知道的是,SSRS本身是否提供了一个更好的方法来实现这一目标?我们想过试图以某种方式使用一个将被设置为过期的缓存实例,但这似乎只适用于报表的已执行实例,而不是报表本身。据我所知,无法设置报告过期。有其他方法可以让SSRS为我们清理吗?

立即删除报告不是一个选项,因为我们的执行是异步的。

回答

2

内置,没有什么。但是自己写点东西很简单。

尝试让您的报告目录查询超过半小时(或大约半小时)的报告。您甚至可以加入ReportServerTempDB以查看它们是否仍有活动会话(在这种情况下,您会稍微忽略它们)。

一旦找到它们,就可以很容易地使用Web服务接口来抓取它并从目录中删除它们。

但是...我实际上会看看使用代码提供自定义过滤器的更好方法。当然,您可以提供过滤器作为参数,并使用报告中的VB代码将用户提供的内容转换为可为每行评估的内容。

Rob

+0

好的技巧检查临时数据库中的活动会话。至于在报告中使用嵌入式代码,这是一个很好的想法,但可能不适合我们的情况。我们的要求是让我们的终端用户非常容易地开发自己的定制报告。要求他们为他们的报告编写代码可能不会飞。我也想知道评估每一行的代码对性能的影响。 –