大数跨境
0
0

【SQL】如何修改数据库的排序规则

【SQL】如何修改数据库的排序规则 勤哲Excel服务器软件服务中心
2022-09-12
2
导读:问题:修改或查看数据的时候,提示:无法解决equal to 运算中“Chinese_PRC_CI_AS”和“SQL_Latin1_General_CP1_CI_AS”之间的排序规则冲突。


推荐指数:


问题:修改或查看数据的时候,提示:无法解决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(微信同号)

售前QQ1084166067

购买QQ: 473625929

售后QQ1019224211

【声明】内容源于网络
0
0
勤哲Excel服务器软件服务中心
涵盖了Excel服务器的功能用法以及在安装、系统设计和后期使用过程中遇到的各种问题。
内容 669
粉丝 0
勤哲Excel服务器软件服务中心 涵盖了Excel服务器的功能用法以及在安装、系统设计和后期使用过程中遇到的各种问题。
总阅读425
粉丝0
内容669