【IT168 技术文档】SQL Server 2008 引入了对报表定义语言 (RDL)、报表对象模型以及呈现对象模型的更改,这些更改影响在早期版本的软件中创建的报表。将 SQL Server 2005 Reporting Services 安装升级到 SQL Server 2008 Reporting Services 安装时,已上载到报表服务器的现有报表和快照将在第一次进行处理时自动升级为新的架构。如果报表不能自动升级,则将使用向后兼容模式处理报表。
在 Business Intelligence Development Studio 中的报表设计器中打开现有报表定义 (.rdl) 文件时,这些文件将自动升级。
升级报表后,您可能注意到出现附加的错误、警告和消息。这是对内部报表对象模型和处理组件进行更改的结果,当在报表中检测到根本问题时,将导致出现这些消息。

- SQL Server 2000
- SQL Server 2000 Service Pack 1
- SQL Server 2000 Service Pack 2
- SQL Server 2005
- SQL Server 2005 Service Pack 1
- SQL Server 2005 Service Pack 2

第一次使用时,报表服务器会尝试将现有的已发布报表和报表快照升级为新的报表定义架构,不需要您执行特定操作。当用户查看报表或报表快照时,或者当报表服务器处理订阅时,将尝试进行升级。报表定义不会被替换,而是继续存储在它在 SQL Server 2008 报表服务器上的原始架构中。如果报表不能升级,则报表将在向后兼容模式下运行。

向后兼容模式
成功升级的报表由 SQL Server 2008 Reporting Services 报表处理器进行处理。不能升级的报表由 SQL Server 2005 Reporting Services 报表处理器在向后兼容模式下进行处理。一个报表不能同时由这两个报表处理器来处理。
第一次使用时,报表将成功升级或标记为向后兼容。
只有 SQL Server 2008 Reporting Services 报表处理器才支持新功能,例如按需分页、Tablix 数据区域、仪表数据区域以及增强的图表数据区域。如果报表不能升级,您仍然可以查看呈现的报表,但不能使用新功能。若要利用新功能,必须成功地升级报表。

使用子报表升级报表
当报表中包含子报表时,升级过程中会出现四种可能的状态之一:
主报表和所有子报表都能成功地升级。它们由 SQL Server 2008 Reporting Services 报表处理器来处理。
主报表和所有子报表都不能升级。它们由 SQL Server 2005 Reporting Services 报表处理器来处理。
主报表可以升级,但一个或多个子报表不能升级。主报表由 SQL Server 2008 Reporting Services 报表处理器处理,但呈现的报表在不能升级的子报表将出现的位置显示消息“错误: 无法处理子报表”。
主报表不能升级,但一个或多个子报表可以升级。主报表由 SQL Server 2008 Reporting Services 报表处理器处理,但呈现的报表在子报表将出现的位置显示消息“错误: 无法处理子报表”。
如果看到错误“错误: 无法处理子报表”,则必须更改主报表或子报表的定义,以便可以由报表处理器的同一版本处理报表。
钻取报表没有此限制,因为它们被作为独立的报表处理。

使用自定义报表项升级报表
SQL Server 2005 Reporting Services 报表可能包含由第三方软件供应商提供并由系统管理员安装在报表创作计算机和报表服务器上的自定义报表项 (CRI)。可以按以下方式升级包含 CRI 的报表:
- SQL Server 2005 Reporting Services 报表服务器升级到 SQL Server 2008 Reporting Services 报表服务器。在首次使用时自动升级报表服务器上的已发布报表。
- SQL Server 2005 Reporting Services 报表上载到 SQL Server 2008 Reporting Services 报表服务器。报表将在首次使用时自动升级。
- 在 Business Intelligence Development Studio 的报表设计器中打开 SQL Server 2005 Reporting Services 报表。将创建原始报表的一个备份副本。发生以下两种情况之一:
- 报表中的所有 CRI 没有不受支持的功能。CRI 将转换为新报表定义架构中的报表项,以便升级整个报表。如果保存该文件,则它将保存在当前 RDL 命名空间中。
- 报表中的一个或多个 CRI 具有不受支持的功能。出现一个对话框,提示用户是转换这些 CRI 还是将它们保留不变。
- 报表中的所有 CRI 没有不受支持的功能。CRI 将转换为新报表定义架构中的报表项,以便升级整个报表。如果保存该文件,则它将保存在当前 RDL 命名空间中。
升级报表服务器上的报表
当 SQL Server 2005 Reporting Services 报表第一次在已升级到 SQL Server 2008 Reporting Services 报表服务器的报表服务器上运行时,该报表将自动升级到报表服务器支持的当前报表定义命名空间。该报表可能在升级之前已存在于报表服务器上,或该报表可能已通过报表管理器上载,或从 SQL Server 2005 BI Development Studio 中的报表设计器发布到报表服务器。
CRI 类型 | 报表服务器升级操作 |
---|---|
第三方 CRI | 不执行升级。 由 SQL Server 2005 Reporting Services 报表处理器来处理。 |
具有不受支持的功能的 Dundas 2005 图表 CRI | 升级到最新的 RDL 架构。所有的 Dundas 2005 图表 CRI 都将转换为 SQL Server 2008 Reporting Services 图表数据区域。 由 SQL Server 2008 Reporting Services 报表处理器来处理。 |
不具有不受支持的功能的 Dundas 2005 仪表 CRI | 升级到最新的 RDL 架构。所有的 Dundas 2005 仪表 CRI 都将转换为 SQL Server 2008 Reporting Services 仪表数据区域。 由 SQL Server 2008 Reporting Services 报表处理器来处理。 |
具有不受支持的功能的 Dundas 2005 图表 CRI | 不执行升级。 由 SQL Server 2005 Reporting Services 报表处理器来处理。 |
具有不受支持的功能的 Dundas 2005 仪表 CRI | 不执行升级。 由 SQL Server 2005 Reporting Services 报表处理器来处理。 |
在报表设计器中使用 CRI 打开报表
在 SQL Server 2008 Business Intelligence Development Studio 中使用报表设计器中的 CRI 打开 SQL Server 2005 Reporting Services 报表时,报表将升级到新的报表定义架构。根据报表中包含的 CRI,将执行下列操作之一:
- 检测到第三方 CRI。如果安装在报表创作计算机上的 CRI 的版本与新的 RDL 架构不兼容,则设计图面将显示带有红色 X 的文本框。您必须与系统管理员联系,以便从与新的 RDL 架构兼容的第三方供应商那里安装新版本的 CRI。
- 检测到 Dundas 2005 图表或仪表 CRI,所有实例都包含受支持的功能。所有 Dundas 2005 图表和仪表 CRI 都将转换为您在工具箱中看到的 Reporting Services 图表和仪表报表项。这些项称为本机图表和仪表报表项。
- 检测到 Dundas 2005 图表或仪表 CRI,所有实例都包含不受支持的功能。不受支持的功能将在本节后面的内容中介绍。您可以选择是否将所有 CRI 转换为本机报表项。
- 如果转换它们,报表将升级到新的 RDL 架构,Dundas 2005 图表和仪表 CRI 将转换为相应的本机图表和仪表报表项,但将删除不受支持的功能。在呈现报表中,您看到的情况可能与 CRI 的显示方式有所不同。
- 如果选择不转换它们,则报表将升级到新的 RDL 架构,但是 CRI 将被视为第三方 CRI。您必须配合系统管理员和第三方供应商来安装与新报表架构兼容的全新 CRI。如果新的 CRI 不可用,则报表将在报表设计器中显示一个带有红色 X 的文本框。
- 如果转换它们,报表将升级到新的 RDL 架构,Dundas 2005 图表和仪表 CRI 将转换为相应的本机图表和仪表报表项,但将删除不受支持的功能。在呈现报表中,您看到的情况可能与 CRI 的显示方式有所不同。
Dundas 2005 图表 CRI 不受支持的功能包括:
- 批注。
- 自定义图例项。
- 自定义属性具有下列名称:
- CUSTOM_CODE_CS
- CUSTOM_CODE_VB
- CUSTOM_CODE_COMPILED_ASSEMBLY
例如,如果 .rdl 文件包含以下部分,则需要在升级之前将其删除:<CustomProperty>
<Name>CUSTOM_CODE_CS</Name>
<Value>dXNpWERwegfdfgiobxxl3bmc… </Value>
</CustomProperty>
- CUSTOM_CODE_CS
Dundas 2005 仪表 CRI 不受支持的功能包括:
- 数字指示器。
- 状态指示器。
- 自定义图像。