2014-01-29 6 views
11

Zur Vereinfachung POC, ich habe die folgende Abfrage, getippt mit Zeichenspalten:SQL Server 2008 Collation Konflikt - wie zu lösen?

select AH_NAME1 from GGIMAIN.SYSADM.BW_AUFTR_KOPF 
union 
select AH_NAME1 from GGI2014.SYSADM.BW_AUFTR_KOPF 

und ich erhalte die folgenden Fehler:

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 in der Tat mit Sortierung SQL_Latin1_General_CP1_CI_AS erstellt wurde. Dies wurde in SMS geändert und die Instanz wurde auch in SMS neu gestartet.

Wenn ich in SMS aussehen, sowie query:

select name, collation_name from sys.databases 

alle Anzeichen dafür, dass sowohl GGIMAIN und GGI2014Latin1_General_CS_AS zusammengestellt werden.

Hat jemand einen Ratschlag, was noch zu tun ist?

Danke,

Matt

+0

Hallo marc_s. Kannst du erklären, warum du meinen Beitrag bearbeitet hast? – mtallon

Antwort

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 

Wenn ich mich nicht irre, die Sortierung der Datenbank zu ändern ändert die Sortierung der bereits vorhandenen Objekte nicht. Es werden nur neue Objekte

+0

+1 - einverstanden mit Ihnen – Devart

+1

Bitte beachten Sie, dass, wenn es ein AS-Schlüsselwort in der Select-Anweisung gibt, der COLLATE davor geht. –

+1

@SteveTaylor Vielen Dank, das hat mich sehr gerettet – Sam

2

versuchen diese (vielleicht sind Sie Spalten andere Sortierung haben) -

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

betroffen sein füge ich ein collate für jedes Feld der Abfrage

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 in der Abfrage, die den Fehler

ich Hoffnung gibt, funktioniert es und ich habe sie haben kein Problem