9
votes

Collation Conflit SQL Server

Lorsque je délivrant une requête SQL, je reçois parfois le message d'erreur suivant:

ne peut pas résoudre le conflit de collation entre "Latin1_General_ciCi_AS" et "SQL_Latin1_Generaleral_CP1_CI_AS" dans le fonctionnement égal à.

Je résolvez souvent ce problème, il suffit de rendre la même chambre de table identique. J'ai donc besoin de savoir s'il y a un moyen rapide de résoudre ce problème.

J'aimerais mettre quelque chose de spécial dans ma requête SQL en conséquence, si la collation n'est pas identique pour les deux table dans la requête SQL, alors la requête fonctionnera parfaitement sans erreur. Y a-t-il une solution?


0 commentaires

3 Réponses :


2
votes

Vous pouvez spécifier une classement dans une requête en utilisant le Assembler clause :

where  col1 = col2 collate Latin1_General_CI_AS


0 commentaires

16
votes

Vous pouvez forcer la collation à l'aide du rassembler Clause.

Ie P>

SELECT *
FROM Table1 T1
INNER JOIN Server2.dbo.Table2 T2
ON T1.Name = T2.Name COLLATE database_default


0 commentaires

0
votes

Il pourrait être possible que les deux serveurs utilisent différentes collations. Si oui, vous obtiendrez une erreur similaire à celle que j'ai mentionnée en haut de cette rubrique. Ce que vous devriez faire dans ce cas?

  1. Vous pouvez modifier la classement par défaut de l'une des colonnes / champs de table, mais cela pourrait avoir un effet d'ondulation pour d'autres tables actuellement utilisées avec la table modifiée.

  2. Utilisez Collate Basey_Default Mot-clé tout en faisant correspondre les colonnes / champs

    J'aime: xxx


0 commentaires