2010-08-06 107 views
18

在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

回答

13

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

8

在開發中,您可以通過編輯設計器配置文件來關閉緩存(並消除* .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

2

我不相信zomf的答案作品(和neither are Microsoft)。理論上聽起來不錯,但在實踐中似乎並不奏效。

我認爲最簡單的事情就是與這些文件一起生活。如果您感到困擾,您可以始終將您創建的每個報告的AutoRefresh屬性設置爲1秒(儘管令人不快的閃爍效果和加載到服務器上可能使此選項不可行)。

否則,只需在預覽報告時點擊REFRESH按鈕。

另一個選項可能是爲報表創建虛擬參數,每次運行它時都會隨機生成一個值。由於SSRS只在輸入的參數組合與上次運行報告時完全相同時才顯示緩存數據,因此這可能會解決問題。但是,我沒有在實踐中對它進行測試。

0

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)) 
} 
相關問題