原因是这样的;
临时表是建立在tempdb数据库里的,当然默认使用的是tempdb的排序规则。由此可以推断,你的数据库和tempdb数据库的排序规则不一致
你可以这样解决
用'create table #temptbl的时候,指定排序规则,比如:
create table #temptbl
(id int identity(1,1),
aa char(10) COLLATE Chinese_PRC_CI_AS
)
临时表是建立在tempdb数据库里的,当然默认使用的是tempdb的排序规则。由此可以推断,你的数据库和tempdb数据库的排序规则不一致
你可以这样解决
用'create table #temptbl的时候,指定排序规则,比如:
create table #temptbl
(id int identity(1,1),
aa char(10) COLLATE Chinese_PRC_CI_AS
)
1、在查询时指定排序规则,这样无须对数据库进行任何修改
select * from a join b on a.aa=b.bb collate chinese_prc_ci_as --(可以任意指定一种sqlserver支持的排序规则)2、修改联结字段的排序规则,使之统一可以在企业管理器中,修改表的设计
也可以用sql语句
alter table a ALTER COLUMN aa char(10) COLLATE Latin1_General_CI_AS3、使用sql server的工具Rebuildm.exe 更改 Microsoft SQL Server2000 实例的排序规则设置4、重新安装sql server,选择需要的排序规则
--举例
create table a
(id int identity(1,1),
aa char(10) COLLATE Chinese_PRC_CI_AS, --199 Chinese_PRC_CI_AS
ab char (10) COLLATE Latin1_General_CI_AS
)
go
insert into a
select 'am','an'
union all select 'amm','ann'
union all select 'ammm','annn'
gocreate table b
(id int identity(1,1),
ba char(10) COLLATE Chinese_PRC_CI_AS,
bb char (10) COLLATE Latin1_General_CI_AS
)
go
insert into b
select 'bm','bn'
union all select 'bmm','bnn'
union all select 'bmmm','bnnn'如果在查询分析器中执行select * from a join b on a.aa=b.bb查询语句,则会出现如下错误信息:
服务器: 消息 446,级别 16,状态 9,行 1
无法解决 equal to 操作的排序规则冲突。