在SSRS中,有没有办法禁用rdl.data文件创建

时间:2010-08-06 14:53:18

标签: reporting-services rdl

在SSRS中,我注意到rdl.data缓存文件存储在我的开发机器上。运行报告时,这些文件是否也存储在Reports Server上?如果是这样,有没有办法避免在服务器上创建这些文件?

4 个答案:

答案 0 :(得分:13)

rdl.data文件不是在服务器上创建的 - 它们纯粹是为了在开发过程中加快报表执行时间,当您在调整布局时重复运行具有相同参数的报表时。

作为一个侧面点,我认为可以配置SSRS服务来缓存结果以供重用。

我不知道服务使用的缓存机制的细节;它可能使用基于文件的机制,如rdl.data,或者它可能将结果存储在其中一个ReportingServices数据库中。

也许更了解SSRS的人可以确认该机制的细节。

答案 1 :(得分:10)

在开发过程中,您可以通过编辑设计器配置文件来关闭缓存(并消除* .rdl.data文件)。

对于SQL Server 2008 SSRS,默认位置为:

C:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ PrivateAssemblies \ RSReportDesigner.config

CacheDataForPreview 更改为“false”

来源链接 http://blog.summitcloud.com/2010/05/disable-reporting-services-data-cache-in-development/

答案 2 :(得分:3)

我不相信zomf的答案有效(和neither are Microsoft)。这在理论上听起来不错,但似乎在实践中并不奏效。

我认为最简单的方法就是忍受这些文件。如果您感到困扰,您可以随时将您创建的每个报告的AutoRefresh属性设置为1秒(尽管服务器上的令人不快的闪烁效果和负载可能会使此选项不可行)。

否则,只需在预览报告时单击REFRESH按钮。

另一个选项可能是为报表创建虚拟参数,每次运行时都会随机生成一个值。由于SSRS仅在输入的参数组合与上次运行报表时相同时才显示缓存数据,因此可能会解决问题。但是,我没有在实践中测试它。

答案 3 :(得分:0)

PowerShell救援,只需隐藏它 - 将一个PowerShell项目添加到Reports解决方案中,并将其设置为构建配置中的启动项目:

$path = "../*.rdl.data"

$rdlDataFiles = Get-ChildItem -Recurse -Force -Path "$path";

Write-Output "$path"

$rdlDataFiles | ForEach-Object {
  Write-Output "Hiding *.rdl.data file $_"

  $_.Attributes = $_.Attributes -bor (([System.IO.FileAttributes]::Hidden))

  # Next line isn't required per say, but just a guard.
  $_.Attributes = $_.Attributes -bor (-bnot([System.IO.FileAttributes]::ReadOnly))
}