SQLSERVER环境中提示排序规则不一致时的处理
金蝶云社区-huang_yunzhi
huang_yunzhi
1人赞赏了该文章 2,741次浏览 未经作者许可,禁止转载编辑于2014年09月15日 16:28:54
在SQL Server环境下,EAS使用的表中的文本型字段默认的排序规则是Chinese_PRC_CS_AS,但是在某些环境中会提示排序规则冲突,这通常是某些表中存在了Chinese_PRC_CI_AS排序规则的字段导致冲突,通过下面的脚本排查存在冲突的表及字段,
select a.name 表名,b.name 字段名,b.collation 排序规则
from sys.sysobjects a
inner join sys.syscolumns b on a.id=b.id
where b.collation='Chinese_PRC_CI_AS' /*查询是否存在忽略大小写的字段*/
and a.xtype='U'/*只显示用户对象*/
and a.name like 'T_%' /*只显示EAS的表*/;
查询到t_gl_assistmeasurebalance表中有几个文本型字段的排序规则为“Chinese_PRC_CI_AS”,经与现场沟通确认,现场直接在SQL Server中对该表进行了备份操作,导致排序规则出现了改变(数据库中默认排序规则是Chinese_PRC_CI_AS),使用下面的语句修复有排序规则冲突的字段后,功能操作正常。
/*该修改未考虑主键约束,如果有,需要先删除主键,再修改,修改完成后再重建主键*/
ALTER TABLE T_SYS_DATACENTER ALTER COLUMN FMajor varchar(14) COLLATE Chinese_PRC_CS_AS not null;