(SQLSERVER2008)排序规则
最近做项⽬时,⽆意间碰到⼀个排序规则的问题,导致EAS⼆次开发单据都不能打开。
做了如下测试:
///创建表1
create table #t1(
name varchar(20) collate Albanian_CI_AI_WS,
value int);
//创建表2
create table #t2(
name varchar(20) collate Chinese_PRC_CI_AI_WS,
value int );
/
//执⾏如下语句
sql sever 2008
select * from #t1 A inner join #t2 B on A.name=B.name
会抛出如下错误信息:
⽆法解决 equal to 运算中 "Chinese_PRC_CI_AI_WS" 和 "Albanian_CI_AI_WS" 之间的排序规则冲突。
///执⾏如下语句,可成功执⾏
select * from #t1 A inner join #t2 B on A.name=B.name collate Albanian_CI_AI_WS
//查询如下的结果,查看所⽀持的排序规则。
select * from ::fn_helpcollations()
关于此函数的说明,可参见:。
通过以上的测试,项⽬中的问题的原因就⽐较明显了。
下述是针对Kingdee EAS的说明。
EAS的单据序时簿所绑定的Query是多表连接的查询,由于多个表之间使⽤连接查询时,连接条件的字段的排序规则不⼀致导致出现排序规则冲突。
出现上述问题的原因:
执⾏数据库脚本的时候,使⽤的是sqlserver⾃带的控制台,⽽⾮EAS Admin Console。
导致执⾏后排序规则不⼀致。
解决办法:
重新建表,在EAS Admin Console执⾏数据库脚本。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。