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.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 (编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Office降价:台湾与美国同行!大陆也将跟进?
- 斯坦福暗中相助 Google个性化搜索提速千倍
- sql-server-2000 – 查询以获取SQL Server 2000中的所有外键
- 最好的免费图书馆或数据库,以确定日期是美国还是国际假日?
- 实体框架 – 具有Identity列的SQL Server Compact 4.0表中插
- sql-server-2012 – 如何卸载SQL Server Management Studio
- 索尼推出CD防拷贝技术 向文件共享说“不”
- sql-server – 使用动态sql在指定数据库中创建View?
- SQL Server 2008的Transact-SQL语言增强
- 预测Dapp很可能是区块连的下一个风口