SSRS的报表版本控制

问题

如今商务智能应用广泛,对我们的商业愈加重要. 对新报表和的各种需求不断攀升. 自 SQL Server 2008 R2的 Reporting Services (SSRS) 开始,微软视图为减轻IT团队的工作量,推出了报表工具 Report Builder 3.0.  在此之前建立复杂的报表必须用BIDS (就是 Visual Studio ,2012以后叫SSDT).现在报表都可以用 BIDS或者Report Builder建立. 因为可以使用两个工具创建修改的关系. 报表的版本控制愈加困难.

当报表只用BIDS创建的时候,版本控制非常简单. 你随便用哪个工具都可以搞定 .比如 TFS, SVN, 或者Git.  但是用Report Builder 就比较复杂了, 这个玩意没集成任何版本控制系统. 此外Report Builder可以在服务端直接设计和保存 ,这个就使得版本控制更困难了.   Report Builder也可以存在本地.不过使用 共享数据集和数据源就有麻烦了.

为什么要进行版本控制

版本控制系统( version control system (VCS)) 有很多好处. 最大的好处就是可以还原先前版本. 一个好的版本控制系统也可以让你容易的查看版本的不同变化,meta-data等. 现在我们要同时用Report Builder和BIDS, 因此我们的版本控制不太容易了.

我找了很多资料,但是没有搞定. 我看到一个解决方案是把 RDLs 导出到SVN . 我看到一个解决方案是,把 RDL文件放到SVN,然后把开发服务器上报表的每个变动记录提交到VCS.不过解决方案和我的现有环境不匹配, 我们有些是用BIDS有些却是用 Report Builder, 有些在本地文件系统,有些则是在报表服务器.

我的SSRS版本控制系统

因为没找到适合的解决方案.我打算自己建立一个用来回复先前的版本.

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/SQLServer/

这是一个非常简单的系统 . 我就实现了服务器上报表的变更记录 . 我在报表服务器数据库中添加了一个表格,用来记录报表的版本.(参见下面代码) . 然后我在 数据库上添加了  insert/update 触发器 .

版本记录表代码:

USE ReportServer
go
CREATE TABLE [dbo].[VersionStore](
      [VersionItemId] [bigint] IDENTITY(1,1) NOT NULL,
      [ItemId] [uniqueidentifier] NOT NULL,
      [Name] [nvarchar](425) NOT NULL,
      [ModifiedDate] [datetime] NOT NULL,
      [ModifiedBy] nvarchar(50),
      [InsertedDate] [datetime] NOT NULL,
      [Def] [xml] NULL,
 CONSTRAINT [PK_VersionStore] PRIMARY KEY CLUSTERED
(
      [VersionItemId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

触发器代码:

USE ReportServer
go
ALTER TRIGGER StoreVersion ON dbo.Catalog
   FOR INSERT, UPDATE
AS
BEGIN
      INSERT INTO ReportServer.dbo.VersionStore
         ( ItemId
         ,Name
         ,ModifiedDate
         ,ModifiedBy
         ,InsertedDate
         ,Def
         )
         SELECT ItemId
              ,[Name]
              ,ModifiedDate
              ,u.UserName ModifiedBy
              ,GETDATE() InsertedDate
              ,CONVERT(XML, CONVERT(VARCHAR(MAX), CONVERT(VARBINARY(MAX), CONTENT))) Def
            FROM Catalog C
               INNER JOIN Users U
               ON u.UserID = c.ModifiedByID
            WHERE Content IS NOT NULL AND Type != 3
               AND ItemID IN (
               SELECT c.ItemID
                  FROM Catalog C
                     LEFT OUTER JOIN ( SELECT v1.ItemID
                                            ,MAX(v1.modifiedDate) modifiedDate
                                          FROM VersionStore V1
                                          GROUP BY ItemID
                                     ) V
                     ON C.ItemID = v.ItemID
                  WHERE Content IS NOT NULL
                     AND ( v.itemID IS NULL
                           OR v.modifiedDate != c.ModifiedDate
                         ) )
END

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索报表
, 版本控制
, null
, 版本
, 版本控制工具
, report
, 控制
, builder
, 6 c++ builder svn
, sqlserver ssrs
, 版本控制tortoisehg
, sqlserver c++builder
报表c++builder
ssrs报表开发教程、ssrs报表、ssrs 修改报表数据、ssrs报表部署、ssrs vs报表开发教程,以便于您获取更多的相关知识。

时间: 2024-12-03 08:13:06

SSRS的报表版本控制的相关文章

SSRS自助报表怎控制用户权限

问题描述 SSRS自助报表怎控制用户权限 用SQL Server Reporting Service 让登录用户自己做报表并可以发布,怎么控制权限,根据登录用户的不同显示的报表是不同 解决方案 参考:http://www.erpgear.com/2011/0409/982.html 解决方案二: 开发教程">

SSRS:报表邮件订阅中 SMTP 服务器匿名访问与 Windows验证

报表邮件订阅中 SMTP 服务器匿名访问与 Windows验证, 以及如何成功订阅报表的实例 这篇文章源于在上一篇博文中有园友提出订阅 SSRS 报表时的一个问题,  于是就好好总结了一 下,把有关 SSRS 报表订阅的要点和容易出现问题的地方写出来,希望对大家有所帮助! 参看上一篇博文 - SSRS 报表中分组聚合的展开和收起效果与处理不规则层次结构的技巧(没有子元 素的时候不展开, 删除+符号) 先展示订阅成功的效果之一 进入正文.... 首先,先列出常见问题,大家多多少少碰到过. 第一,在

SSRS:报表中分组聚合的展开和收起效果与处理不规则层次结构的技巧

报表中分组聚合的展开和收起效果与处理不规则层次结构的技巧(没有子元素的时候不展开, 删除+符号) 分组聚合的展开和收起效果在SSRS Report中非常常用,并且有时还要处理一些比较特别的情况.比 如分组合并时有的层次结构是不规则的,有的组有两层,遇到这种情况应该如何处理? 注意到下面的这个需求,如果 France 下面没有其它的子层级,就不显示 + 号,如果 United States - Utah/Minnesota 州没有城市的子层次那么它们也不显示 + 号. 这样的需求在 SSRS Re

SSRS入门(七) 报表订阅

SSRS提供基本的报表订阅功能,此篇讲演示如何订阅一个报表. 报表订阅通常的一个需求就是,用户希望在一个固定的时间,比如每周指定的一天,或者每天固定的一个时间,收到关于某业务的最新报表数据. SSRS的报表订阅提供两种主要的方式,一种是邮件发送,一种是往指定的共享目录里发送. 邮件发送的前提是你要有自己的SMTP服务器,经笔者验证以及所获取的资料,而从第三方网站申请的SMTP服务居然是不可以的,从系统跟踪的信息也可以看出走的不是DBMAIL,由于涉及到了SMTP服务器的配置,所以这里暂不做介绍,

基于SQL Server 2008报表服务(SSRS)讨论解决方案

作为业务的一部分,许多公司都需要由扫描图像或各种官方支持的不同格式来生成报表和表格.对于这些文档,通常都有着严格的格式要求,甚至连对文本框.标签大小和字体样式的丝毫变动都不允许.而且,重新创建与原始表格完全一致的报表,是一项代价可能很大.也非常容易出错的任务.填充表格的数据通常存储在关系型数据库中,在输出的表格中,必须将它们显示在准确的位置上.这种情况有时被称为固定布局的报表,有时被叫做像素级完美报表. 本文基于SQL Server 2008的报表服务(SSRS)讨论了针对这一问题的解决方案.在

SSRS入门(九) 匿名访问的一个间接方法

SSRS是一个功能丰富的报表平台,我们可以在这个平台上实现各种不同需求的报表应用,所以这个平台也吸引了很多.net框架之外的技术,希望能在应用中引入SSRS的报表,比如JSP或者PHP页面,这个时候系统往往会有这种需求,就是通过程序能够直接访问到SSRS的报表,而不让其弹出身份验证框. 从SSRS2008之后,匿名访问的配置就没有那么直接,可能会很麻烦,关于这点园子里已经有兄弟Dege301对其描述过: http://www.cnblogs.com/dege301/archive/2010/04

SSRS共享数据源设置权限问题

问题描述 SSRS共享数据源设置权限问题 怎样在设置完共享数据源完毕才能,根据登录用户的 不同获取共享数据源内的表也是不同的,也就是说怎样设置才能让特定用户做共享数据源内特定的表 解决方案 参考创建.修改和删除共享数据源 (SSRS)为报表数据源指定凭据和连接信息你可以在数据库中的表中给不同登录用户设置不同的权限,然后在共享数据源连接设置为提示用户输入凭据或使用 Windows 集成安全性,这样不同的用户登录就只能读取他们有权限的表了.如果只是报表查询,我是使用系统变量User!UserID来获

SSRS Reports 2008性能优化案例二

前几天一同事反映海外工厂A的SSRS报表比较慢,让我检查优化一下.于是我检查了下2015-07-13到2015-07-15 12:00这段时间报表的耗时记录 USE [ReportServer];   GO    SELECT  C.Name                         AS ReportName          ,E.ReportID                     AS ReportID          ,E.UserName                 

SQL Server DBA:那些年,我们一起用过的工具

作为SQL Server DBA,我们常常抱怨微软自带工具的种种不好,但能做到开箱 即用已经很难得.SQL Server 2012中包含了以下三种单独的GUI工具,供SQL Server DBA与开发者使用. 1.2005年推出的SQL Server Management Studio 2.同样于2005年推出的SQL Server Business Intelligence Development Studio 3.2012年全新推出的SQL Server Data Tools SQL Ser