web-dev-qa-db-fra.com

Conflit de classement SQL Server 2008 - comment résoudre le problème?

Pour simplifier, POC, j'ai la requête suivante, en utilisant des colonnes de caractères:

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

et j'obtiens l'erreur suivante:

Msg 468, niveau 16, état 9, ligne 2
Impossible de résoudre le conflit de classement entre "SQL_Latin1_General_CP1_CI_AS" et "Latin1_General_CS_AS" dans l'opération UNION.

GGI2014 a bien été créé avec la collation SQL_Latin1_General_CP1_CI_AS. Cela a été modifié dans SMS et l'instance a été redémarrée, également dans SMS.

Quand je regarde dans les SMS, ainsi que la requête:

select name, collation_name from sys.databases

toutes les indications sont que GGIMAIN et GGI2014 sont tous deux assemblés Latin1_General_CS_AS.

Quelqu'un a-t-il des conseils sur ce qu'il reste à faire?

Merci,

Mat

12
mtallon
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

Sauf erreur de ma part, la modification du classement de la base de données ne modifie pas le classement des objets existants. Seuls les nouveaux objets seront affectés

17
codeblur

Essayez celui-ci (peut-être que vos colonnes ont un classement différent) -

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
Devart

J'ajoute un assemblage pour chaque champ de la requête 

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 dans la requête qui donne l'erreur

J'espère que ça marche et que je les ai sortis du pétrin

0
Brayan Aguilar