有时候很难跟上所有人的节奏2005年,这个和2008年,从微软。我经常感到惊讶的是,微软的产品管理不仅能保持一切正常,而且还能协调跨产品线的发布和依赖,特别是当这些依赖甚至不在同一个部门或产品领域时。但就像命运所安排的那样,今天我很不幸地遇到了一种不太为人所知的情况:“哦,是的,它不为人所知,但当你这样做时,它是不相容的。”
当使用Visual Studio 2008构建报表,然后将这些报表定义(RDL文件)部署到SQL 2005 Reporting Services时,就会出现不兼容性。用VS 2008创建的数据库报表与SQL 2008报表服务工作得很好,但与SQL 2005报表服务不兼容。只有在VS 2000和VS 2005中创建的报表设计与SQL 2005报表服务兼容。如果你试图将vs2008设计的报告部署到SQL 2005 Reporting Services上,你会得到这样一个漂亮的小错误消息:
错误2报告定义无效。详细信息:报表定义有一个无效的目标命名空间“http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition”,无法升级。
我是在使用VS 2008创建了一些报表,然后尝试将它们部署到运行SQL 2005 Reporting Services的服务器上之后才了解到这一点的。这个服务器还支持另一个应用程序,只运行在SQL server 2005,还没有测试或升级到SQL server 2008。这种升级在一段时间内可能不会发生。我之前的所有开发、测试和部署都是在运行2008 Reporting Services的服务器上进行的,这就是为什么我之前没有遇到这个问题。
在做了一些谷歌搜索之后,我很快发现,我不是这个星球上唯一遇到这个问题的人。事实上,早在2008年9月,当SQL Server 2008从测试版过渡到正式发布产品时,就已经提出了这个问题(没有解决,也没有提供解决方案)。其他微软用户开始使用VS 2008来创建和维护报表设计,一直不知道他们只能在SQL 2008报表服务上工作。Visual Studio 2008还将现有的2005报告项目升级为新的2008格式,而客户没有意识到这是一个单向的移动,他们将失去与2005报告服务的兼容性。大多数客户都经历了惨痛的教训(在报告设计已经创建或升级之后)。
问题或bug报告,被报告给微软2008年10月关闭。以下是来自SQL Server报告服务团队的Chris b的回应:
“你所看到的行为是经过设计的。不能将SSRS 2008 RDL模式中定义的报表发布到SSRS 2005报表服务器。一旦你把一个报表项目从VS 2005升级到2008,它就会把你所有的报表转换到2008。如果您希望能够将报告发布到SSRS 2005服务器,您需要与VS 2000或VS 2005一起使用。”
我认为他基本上是在说,微软选择不构建任何向后兼容,或兼容模式选项,在发布之间,他们经常做其他产品,如Office产品。
特奥·拉切夫,MVP和MSDN论坛主持人,解释了微软的原因不以这种方式维护兼容性:
“现实情况是,我们希望或需要对产品进行许多更改和增强,设计环境的向后兼容性是不现实的。许多变化是由我们的客户驱动的。我们的报告设计控制本身有很大的变化,然后是“连接”到bid的过程,因为我们想在同一时间升级到VS2008, RDL本身被增强以支持伟大的新特性,当然,服务器组件必须进行更改,以支持新的RDL,以及服务器上的许多其他改进,以增强性能和处理。在2005年和2008年的设计环境中,让所有东西都能来回工作,这不是一件简单的工作。单单处理两个RDL版本就会给设计工具增加很多额外的代码。我们认为这是不现实的,如果必须让我们的客户作为一个整体,希望看到更多的增强和改进,使其成为2008年的产品……”
我猜客户所经历的成本和生产力的损失也不是微不足道的。那么顾客有什么选择呢?以下是微软在线支持代表康健的回复,他建议升级SQL Server是最好的选择:
“据我所知,自然不支持将SSRS 2008项目降级为SSRS 2005。
如果可能的话,我建议您将报表服务器升级到SSRS 2008。或者如果项目中报告很少,我们可以在SSRS 2005中开发整个项目,并使用SQL Server 2008数据库作为数据源。
不是每个人都能很容易地升级他们的数据库服务器。除了涉及的软件成本,应用程序可能还没有准备好数据库升级到SQL Server 2008。或者客户可能需要支持2005和2008报告服务的报告。对于在其产品中使用SQL Server的供应商来说,这是一种非常可能的情况,而且我可以想象,这在许多IT商店中是一种经常发生的情况。
所以在我的例子中,此时的选择是:1)现有的服务器升级到SQL server 2008(实际上并不是一个选项在这个时候由于约束的其他应用程序使用相同的数据库服务器),2)另一个服务器上部署报告已经运行SQL server 2008, 3)建立了一个新的SQL server 2008服务器,或者4)返回并在Visual Studio 2005(或2000)中重新创建所有的报告。
其中3 / 4的选择对微软有积极的收益,第四个选择对客户来说是巨大的生产力损失。对于通过RDL模式更改中的新功能所获得的好处,无论选择什么选项,客户似乎都要承受生产率的打击和/或支付数据库服务器升级的费用。
像这样的吗?以下是米切尔最近的一些帖子。米切尔的书建议:也可以访问米切尔的其他博客和播客:
- Windows 7 RC1和Vista SP2 -两种截然不同的发布模式
- 微软在Windows 7中推出XPM,帮助用户摆脱XP
- Windows 7和Server 2008 R2给我们带来了DNSSEC,我们会使用它吗?
- 微软和苹果:双城记
- 上网本风靡一时,但有人有吗?
- 甲骨文的太阳让微软睁不开眼
访问微软子网获取更多新闻,博客,意见来自网络。报名参加每两周微软简报.(点击新闻/微软新闻提醒)