本地安装SSRS后出现rsInternalError及类型转换异常求助
解决SSRS版本不匹配及内部类型转换错误
1. 先确认实际安装的SSRS版本
先搞清楚你装的SSRS对应的正式版本(比如SQL Server 2019某个累积更新),以及它对应的内部版本号163是否匹配:
- 打开SSRS配置管理器,在「报表服务器状态」页查看版本信息
- 或者找到SSRS安装目录下的
ReportingServicesService.exe,右键→属性→详细信息,查看产品版本
2. 修复升级历史表的版本记录
你手动删除了ServerUpgradeHistory和DBUpgradeHistory里的记录,导致报表服务无法正确识别数据库版本,需要补全正确的163版本记录:
- 打开SSRS工作数据库(默认是
ReportServer),执行以下SQL插入163版本的升级记录(如果表中没有的话):
-- 修复DBUpgradeHistory表 INSERT INTO DBUpgradeHistory (UpgradeId, Version, StartDate, EndDate, Status, ErrorMessage) VALUES (NEWID(), 163, GETDATE(), GETDATE(), 0, NULL); -- 修复ServerUpgradeHistory表 INSERT INTO ServerUpgradeHistory (UpgradeId, Version, StartDate, EndDate, Status, ErrorMessage) VALUES (NEWID(), 163, GETDATE(), GETDATE(), 0, NULL);
- 注意:如果表中已有163版本的记录,确保它是最新的(EndDate为最近时间),可以把其他旧记录的Status设为1(已完成)
3. 用配置管理器重新执行数据库升级
- 打开SSRS配置管理器,切换到「数据库」页,点击「更改数据库」
- 选择「现有报表服务器数据库」,重新连接到你的工作数据库
- 跟着向导完成配置,配置管理器会自动检测版本差异,重新执行必要的升级操作,修复数据库元数据的一致性
4. 排查类型转换错误的细节
如果重启后还是出现System.InvalidCastException,需要检查系统表的字段数据是否异常:
- 查看
Catalog表的Parameter、Settings字段,确保数据类型(比如nvarchar、varbinary)没有被误改 - 检查
ServerSettings表的Value字段,确认数值型配置(比如端口号、超时时间)没有被存成字符串格式
5. 重启报表服务
完成以上操作后,在SSRS配置管理器的「报表服务器状态」页重启Reporting Services服务,然后访问报表门户验证是否恢复正常
内容的提问来源于stack exchange,提问作者Pokiloves
相关产品推荐
相关产品推荐

