执行EAS某项操作时,提示排序规则冲突
问题描述客户正在操作结账,突然提示报错,client.log及apusic日志中均提示排序规则冲突。Caused by:com.kingdee.bos.BOSExceptioncom.kingdee.bos.BOSException: Sql1execute exception : insert intot_gl_assistmeasurebalance(forgunitid, fperiodid, fbaltype, fcurrencyid,faccountid, fperiodyear, fperiodnumber, fassistgrpid , fmeasureunitid ) select distinct t.orgunitid, t.periodid,t.baltype, tc.FID, t.accountid, tp.fperiodyear, tp.fperiodnumber, t.assistgrpid, t.measureunitid fromVTU6R80VZVSN6M985O3C6Z1TF4LJKMXDYVJ t inner join t_bd_currency tc on tc.fid in (t.currencyid,'11111111-1111-1111-1111-111111111111DEB58FDC') inner join t_bd_period tp ontp.fid=t.periodid where t.balancetype =3 and not exists ( select 1 fromt_gl_assistmeasurebalance b whereb.forgunitid = t.orgunitid andb.fperiodid = t.periodid and b.fbaltype= t.baltype and b.fcurrencyid = tc.FID and b.faccountid = t.accountid and b.fassistgrpid = t.assistgrpid and b.fmeasureunitid = t.measureunitid )Caused exception message is: 无法解决 equalto 操作中 "Chinese_PRC_CS_AS" 和"Chinese_PRC_CI_AS" 之间的排序规则冲突。
问题解答在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 ALTERCOLUMN FMajor varchar(14) COLLATE Chinese_PRC_CS_AS not null;
关键字EAS 排序规则冲突 Chinese_PRC_CI_ASChinese_PRC_CS_AS
注意:不要在SQL Server环境下直接创建或备份表或字段,如果需要添加该类信息,请在EAS管理控制台-数据库管理-查询分析器执行对应的脚本。
执行EAS某项操作时,提示排序规则冲突
本文2024-09-16 22:40:29发表“eas cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-eas-49640.html