我们的应用程序使用SQL Server Reporting Services,并允许用户向报表添加自定义过滤器。我们通过修改RDL,然后将修改后的RDL上传到服务器来创建新报告。问题是报告运行一次之后就不再需要了;它只是一个临时报告。显然,这最终会导致大量的临时报告。我们需要一种清理它们的方法。
我们已经考虑过创建服务或工作等外部方法来定期删除报告,如果我们无法提出更好的结果,那么这可能就是我们最终要做的事情。我们想知道的是,SSRS本身提供了更好的方法吗?我们考虑尝试以某种方式使用将被设置为过期的缓存实例,但这似乎只适用于报告的已执行实例而不是报告本身。据我所知,没有办法设置报告到期。还有其他方法让SSRS为我们清理吗?
立即删除报告不是一种选择,因为我们的执行是异步的。
答案 0 :(得分:2)
内置,没什么。但是自己写点东西很容易。
尝试使用一个流程来查询您的报告目录,查找超过半小时(或左右)的报告。您甚至可以加入ReportServerTempDB以查看它们是否仍有活动会话(在这种情况下,您会稍微忽略它们)。
一旦找到它们,就可以轻松地使用Web服务界面获取它们并从目录中删除它们。
但是......我实际上是在寻找使用代码提供自定义过滤器的更好方法。当然,您可以将过滤器作为参数提供,并使用报告中的VB代码将用户提供的内容转换为可以针对每行进行评估的内容。
罗布