2014-01-29 6 views
11

Для упрощения, РОС, я следующий запрос, используя введенный символ колонки:SQL Server 2008 Сопоставление конфликта - как решить?

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
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Latin1_General_CS_AS" in the UNION operation.

GGI2014 действительно был создан при сличении SQL_Latin1_General_CP1_CI_AS. Это было изменено в SMS, и экземпляр был перезапущен, также в SMS.

Когда я смотрю в SMS, а также запрос:

select name, collation_name from sys.databases 

все указывает на то, что оба GGIMAIN и GGI2014 сопоставляются Latin1_General_CS_AS.

Есть ли у кого-нибудь советы о том, что еще нужно сделать?

Спасибо,

Matt

+0

Hi marc_s. Можете ли вы объяснить, почему вы отредактировали мой пост? – mtallon

ответ

16
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 

Если я не ошибаюсь, изменяя параметры сортировки базы данных не меняет сортировку уже существующих объектов. Только новые объекты будут затронуты

+0

+1 - согласен с тобой – Devart

+1

Обратите внимание, что если в выражении select есть ключевое слово AS, перед ним следует COLLATE. –

+1

@SteveTaylor Большое спасибо, это спасло меня много – Sam

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 
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 в запросе, который дает ошибку

Я надеюсь, что это работает, и я получил их из-за проблем