升级SQL 2014至SP2 CU10后部分服务器SSRS补丁冲突及版本报错
解决SQL Server 2014 SP2 CU10升级中SSRS的排序规则冲突与版本不匹配问题
刚碰到过类似的SSRS升级坑,给你一套亲测有效的解决步骤,帮你搞定这个rsInvalidReportServerDatabase错误和排序规则冲突:
1. 先定位并修复排序规则不匹配问题
排序规则冲突是导致补丁升级脚本执行失败、数据库版本没跟上的核心原因,先把这个问题解决:
- 打开SSMS连接到你的SQL实例,执行以下查询,对比报表数据库与实例的排序规则:
-- 查看报表数据库排序规则 SELECT name, collation_name FROM sys.databases WHERE name IN ('ReportServer', 'ReportServerTempDB'); -- 查看SQL实例排序规则 SELECT SERVERPROPERTY('Collation') AS ServerCollation; - 如果两者不一致,先停止SQL Server Reporting Services服务,然后修改数据库排序规则(记得先备份两个报表数据库!):
比如实例排序规则是ALTER DATABASE ReportServer COLLATE <你的实例排序规则>; ALTER DATABASE ReportServerTempDB COLLATE <你的实例排序规则>;SQL_Latin1_General_CP1_CI_AS,就把<你的实例排序规则>替换成对应值。
2. 手动执行SSRS数据库升级脚本
补丁自动升级失败后,我们需要手动触发升级,把数据库版本从163升到164:
- 保持SSRS服务处于停止状态,找到CU10对应的SSRS升级脚本路径(SQL 2014对应的版本号是120):
C:\Program Files\Microsoft SQL Server\120\Tools\Binn\RSConfigTool\Upgrade - 这里有两种执行方式:
- 命令行工具执行:打开管理员命令提示符,切换到上述路径,依次运行:
rsupgrade.exe -i -s <你的SQL实例名> -d ReportServer rsupgrade.exe -i -s <你的SQL实例名> -d ReportServerTempDB - SSMS执行SQL脚本:找到路径下的
ReportServer_Upgrade.sql和ReportServerTempDB_Upgrade.sql,依次在对应的数据库中执行这两个脚本。
- 命令行工具执行:打开管理员命令提示符,切换到上述路径,依次运行:
3. 验证升级结果
- 启动SQL Server Reporting Services服务
- 访问报表服务网站,检查之前的错误是否消失
- 回到SSMS执行查询,确认数据库版本:
正常情况下应该返回SELECT Version FROM ReportServer.dbo.ConfigurationInfo WHERE Name = 'Database Version';164,与预期版本一致。
额外提醒
- 升级前一定要备份
ReportServer和ReportServerTempDB,万一操作出问题可以快速回滚 - 执行脚本的账号需要有服务器级管理员权限和两个报表数据库的
db_owner权限 - 如果修改排序规则时遇到数据冲突(比如某些字段依赖旧排序规则),可以先导出所有报表和订阅,重建报表数据库后再导入,这是兜底方案,优先用前面的步骤解决
内容的提问来源于stack exchange,提问作者Greg
相关产品推荐
相关产品推荐

