配置Report Server数据库时执行脚本报错,寻求技术帮助
解决Report Server数据库创建时的排序规则依赖错误
问题核心
配置SSRS的Report Server数据库时,执行创建脚本失败,提示无法将ReportServer数据库的默认排序规则设为Latin1_General_100_CI_AS_KS_WS,原因是存在名为classified的对象绑定了当前数据库的排序规则,导致无法修改。
可行解决方案
1. 清理残留的SSRS数据库及相关对象
如果之前尝试创建过ReportServer库但中途失败,大概率残留了相关对象:
- 打开SSMS连接目标SQL实例,执行以下脚本删除残留的ReportServer库(确保无活跃连接):
USE master; -- 删除ReportServer库 ALTER DATABASE ReportServer SET SINGLE_USER WITH ROLLBACK IMMEDIATE; DROP DATABASE ReportServer; -- 删除ReportServerTempDB库 ALTER DATABASE ReportServerTempDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE; DROP DATABASE ReportServerTempDB; - 定位
classified对象,执行查询找到它的归属:
找到后确认是否为无用对象,是的话直接删除。SELECT name, type_desc, database_id FROM sys.objects WHERE name = 'classified';
2. 手动创建数据库再配置SSRS
绕开配置管理器的自动创建流程,先手动建好符合要求的库:
- 执行SQL脚本创建指定排序规则的数据库:
CREATE DATABASE ReportServer COLLATE Latin1_General_100_CI_AS_KS_WS; CREATE DATABASE ReportServerTempDB COLLATE Latin1_General_100_CI_AS_KS_WS; - 回到Report Server Configuration Manager,选择「更改数据库」→「选择现有报表服务器数据库」,选中刚创建的
ReportServer库,完成后续配置。
3. 排查跨数据库依赖
如果classified是系统数据库(比如master、msdb)里的对象,检查是否有自定义的跨库依赖:
- 执行查询查看依赖关系:
找到引用该对象的视图、存储过程等,先删除这些依赖,再尝试创建ReportServer库。USE master; SELECT * FROM sys.sql_expression_dependencies WHERE referenced_entity_name = 'classified';
4. 实例级排序规则检查(备选)
如果以上方法都无效,查看SQL实例的默认排序规则是否和目标规则冲突:
- 执行查询获取实例排序规则:
如果实例排序规则和SELECT SERVERPROPERTY('Collation') AS InstanceCollation;Latin1_General_100_CI_AS_KS_WS差异大,且必须用目标规则,只能考虑备份所有数据库后重新安装SQL Server并指定目标排序规则(此操作风险高,谨慎执行)
内容的提问来源于stack exchange,提问作者jtech
相关产品推荐
相关产品推荐

