为简化POC,我使用字符类型列进行以下查询:
select AH_NAME1 from GGIMAIN.SYSADM.BW_AUFTR_KOPF
union
select AH_NAME1 from GGI2014.SYSADM.BW_AUFTR_KOPF
我收到以下错误:
确实使用排序规则Msg 468,Level 16,State 9,Line 2
无法解决UNION操作中“SQL_Latin1_General_CP1_CI_AS”和“Latin1_General_CS_AS”之间的排序规则冲突。
GGI2014
创建了 SQL_Latin1_General_CP1_CI_AS
。这已在SMS中更改,实例已重新启动,也在SMS中。
当我查看短信,以及查询时:
select name, collation_name from sys.databases
所有迹象都表明,GGIMAIN
和GGI2014
都会被整理{{1}}。
有没有人对还有什么需要做什么有任何建议?
谢谢,
马特
答案 0 :(得分:17)
select AH_NAME1 COLLATE DATABASE_DEFAULT from GGIMAIN.SYSADM.BW_AUFTR_KOPF
union
select AH_NAME1 COLLATE DATABASE_DEFAULT from GGI2014.SYSADM.BW_AUFTR_KOPF
除非我弄错了,否则更改数据库的排序规则不会更改已存在对象的排序规则。只有新对象会受到影响
答案 1 :(得分:2)
尝试这个(也许你的列有不同的排序规则) -
SELECT AH_NAME1 COLLATE database_default
FROM GGIMAIN.SYSADM.BW_AUFTR_KOPF
UNION
SELECT AH_NAME1 COLLATE database_default
FROM GGI2014.SYSADM.BW_AUFTR_KOPF
答案 2 :(得分:0)
我为查询的每个字段添加了一个分页
SELECT Field1 collate default_database
,field2 collate default_database
,fieldn collate default_database
From DB1.dbo.table_x
UNION ALL
SELECT Field1 collate default_database
,field2 collate default_database
,fieldn collate default_database
From DB2.dbo.table_y
PD.only在查询中提供错误
我希望它有效,我让它们摆脱了麻烦