SSRS报告版本

问题描述:

我正在寻找一种方法从我的SSRS报告中获取版本信息。我有几个环境,希望能够比较在这些环境中部署哪个报告版本。在SSIS中,这非常容易,因为每个SSIS包在修改和安全时都会得到一个新版本。有没有类似的报告?SSRS报告版本

不幸的是,目前没有类似于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

在我的报告,我创建了一个名为版本变量,并使它成为一个字符串数据键入(并将其移至变量列表的顶部)。每次更改报告时,我都会根据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

目前似乎还没有好的解决方案。 如果您使用默认值创建隐藏参数“版本”,则可以使用构建任务在.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帮助。