2010-11-01 146 views
10

我正在尋找一種方法從我的SSRS報告中獲取版本信息。我有幾個環境,希望能夠比較在這些環境中部署哪個報告版本。在SSIS中,這非常容易,因爲每個SSIS包在修改和安全時都會得到一個新版本。有沒有類似的報告?SSRS報告版本

回答

9

不幸的是,目前沒有類似於RDL文件的dll程序集版本的內置功能。

獲取某種版本信息的唯一方法是通過C#或VB.Net查詢服務器上RDL文件的最後修改日期。你可以使用ReportingServices web服務來做到這一點。

您還可以實現一個自定義函數,該函數會在每次修改RDL文件時將數據庫中的某些字段更新爲當前日期。

所有文件修改信息的問題:您仍然不知道哪個版本在哪個服務器上,您只知道它何時上載/修改。

見一些更多的信息,下面的頁面 - 不幸的是沒有解決方案:

+1

非常感謝您的反饋,我擔心這可能會是這樣。有時很難理解MSFT爲什麼在設計他們的產品時如此不適應,但這就是生活。 :) – nojetlag 2010-11-04 08:48:20

+2

不要讓我開始 - SSRS不是唯一的心得與最佳實踐不一致;-) – 2010-11-04 08:51:02

4

在我的報告,我創建了一個名爲版本變量,並使它成爲一個字符串數據鍵入(並將其移至變量列表的頂部)。每次更改報告時,我都會根據Semantic Versioning更新版本變量。

然後,我可以查詢我的Report Server並查看ExecutionLog表的Parameter字段,我可以看到運行的版本。從技術上講,我在一個寫入另一個表的SSIS工作中處理所有這些問題,但這裏有一點超出範圍。

+1

在我們的報告中,我也創建了一個Version變量,但我們將它的值設置爲$ Revsion $。每次提交新版本時,CVS或SVN(以及我認爲GIT)都會自動更新此值。這是識別RDL版本而無需手動維護的快捷方式。 – 2016-02-22 12:16:16

+1

@CorryS,我知道如何使用SVN汽車道具..但是,你是如何實際讀取和設置變量的? – Nayak 2016-12-12 08:32:34

0

目前似乎還沒有好的解決方案。 如果您使用默認值創建隱藏參數「版本」,則可以使用構建任務在.rdl文件中修改其值,例如,具有源代碼控制變更集編號的修訂部分。 可悲的是,您可能需要另一個Visual Studio項目來放置此構建任務,因爲報告項目類型似乎不可行。

您也可以創建內聯代碼或可能執行一些查找的程序集。

便宜最理想的替代: 使用的最後修改日期形成報告數據庫:

Select 
    Name, 
    Path, 
    CreationDate, 
    ModifiedDate, 
    ModUser.UserName AS ModUser, 
    CAST(catalog.parameter as xml).value(/Parameters[1]/Parameter[Name="Version"][1]/Values[1]/Value[1]','NVARCHAR(20)') as Version 
    FROM Reportserver.dbo.Catalog 
    INNER JOIN ReportServer.dbo.Users ModUser on Moduser.UserID = ModifiedByID 
    WHERE Type = 2 

和日期轉換爲版本號... 跨越不同的服務器實例的版本雖然Doesen't幫助。