IN SSRS,有没有办法来禁用rdl.data文件创建

问题描述:

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

+0

微软连接请求:https://开头连接.microsoft.com/SQLServer/feedback/details/468482 – 2015-03-18 13:16:18

+0

我遇到了一个问题,我认为是由于这个问题,但实际上是因为数据集被复制到'bin /'中,并且当它们不再在项目中时不会被删除导致依赖于它的报告在本地测试期间无法失败。可怕。 – 2015-03-23 17:25:19

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

作为一个观点,我认为可以将SSRS服务配置为缓存重用结果。

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

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

+0

@Ed ....很好的信息。谢谢!如果有人会关心服务器端服务缓存配置评论....我会很感兴趣 – MikeTWebb 2010-08-06 17:17:18

+1

我知道这是一个迟到的评论,但SSRS缓存发生在ReportServer和ReportServerTempDB数据库内部。 这可能为理解SSRS缓存模型提供了一个起点:http://sqlcat.com/technicalnotes/archive/2008/06/26/report-server-catalog-best-practices.aspx – warriorpostman 2010-09-20 20:37:58

+0

@warriorpostman谢谢 - 使用回溯机器追踪信息到当前存档网址https://blogs.msdn.microsoft.com/robertbruckner/2008/11/04/technical-note-series-on-reporting-services-performance-and-scalability /标题是“”构建和部署大规模SQL Server Reporting Services环境技术说明系列“的一部分”,这里是一个具体的粘性链接http://web.archive.org/web/20080802051432/http://sqlcat .com:80/technicalnotes/archive/2008/06/05/reporting-services-scale-out-architecture.aspx – 2017-10-17 18:41:38

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

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

C:\ Program Files文件(x86)的\微软的Visual Studio 9.0 \ Common7 \ IDE \ PrivateAssemblies \ RSReportDesigner.config

变化CacheDataForPreview“假”

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

+4

这不起作用这个连接问题已经在MS打开4年了http://social.msdn .microsoft.com /论坛/ SQLSERVER/EN-US/0aa81692-352f-4c1f-a0e3-95fe6c0797ca/cachedatafo rpreview-in-rsreportdesignerconfig-not-honored – 2013-08-15 02:30:01

+0

设置仍然存在于VS2013中,但仍不会停止生成'.data'文件 – 2015-03-18 15:11:54

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

我认为最简单的事情就是与这些文件一起生活。如果您感到困扰,您可以始终将您创建的每个报告的AutoRefresh属性设置为1秒(尽管令人不快的闪烁效果和加载到服务器上可能使此选项不可行)。

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

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

PowerShell来救援,只是将其隐藏 -​​ PowerShell的项目添加到您的报告解决方案,并将其设为您的构建配置初创项目:

$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)) 
}