
推荐指数:☆☆☆☆☆
问题:修改或查看数据的时候,提示:无法解决equal to 运算中“Chinese_PRC_CI_AS”和“SQL_Latin1_General_CP1_CI_AS”之间的排序规则冲突。如下图:

背景知识:excel服务器要求 Master、ESSystem、应用数据库三者的排序规则一致,否则运行时会出错。新安装的时候,这些数据库是安装时创建的,它们肯定和sql server服务器默认的排序规则一致。例如,sql server 服务器的排序规则是简体中文,新创建的数据库都是简体中文。
分析:据此得知恢复了一个英文的服务器备份出来的数据库,其默认排序规是 SQL_Latin1_General_CP1_CI_AS,而当前数据库服务器的排序规则是 Chinese_PRC_CI_AS
解决:执行如下脚本更改当前应用的排序规则。
ALTER DATABASE 库名 SET OFFLINE WITH ROLLBACK IMMEDIATE
ALTER database 库名 set online
ALTER database 库名 COLLATE Chinese_PRC_CI_AS
若遇到报错提示:对象 'XXX' 依赖于数据库排序规则。如果绑定到架构的对象依赖于数据库排序规则,则无法更改数据库排序规则。请删除数据库排序规则的依赖项,然后重试操作。
ALTER DATABASE 失败。无法将数据库 '库名' 的默认排序规则设置为 Chinese_PRC_CI_AS。

则需要先解决依赖关系的问题。
下面进一步查询上述的 'XXX' 对象具体信息:
select * from sys.objects where name='XXX'
发现'XXX'是一个 Table-valued Function。需要先导出该function 的SQL script脚本,然后删除该function。

这样,ALTER database 库名 COLLATE Chinese_PRC_CI_AS 就可以成功执行了。
最后,执行 'XXX' 导出的脚本,重新创建Table-valued Function 就可以了。
其他资料:
查询库的排序规则:select name,collation_name from sys.databases


联系方式:
购买专线: 13522655010(微信同号)
售前QQ: 1084166067
购买QQ: 473625929
售后QQ: 1019224211

