Sie können das Problem lösen, indem Sie die in einer Abfrage verwendete Sortierung auf eine bestimmte Sortierung zwingen, z. SQL_Latin1_General_CP1_CI_AS
oder DATABASE_DEFAULT
. Zum Beispiel:
SELECT MyColumn
FROM FirstTable a
INNER JOIN SecondTable b
ON a.MyID COLLATE SQL_Latin1_General_CP1_CI_AS =
b.YourID COLLATE SQL_Latin1_General_CP1_CI_AS
In der obigen Abfrage wären a.MyID und b.YourID Spalten mit einem textbasierten Datentyp. Verwenden von COLLATE
zwingt die Abfrage, die Standardsortierung in der Datenbank zu ignorieren und stattdessen die bereitgestellte Sortierung zu verwenden, in diesem Fall SQL_Latin1_General_CP1_CI_AS
.
Im Grunde geht es hier darum, dass jede Datenbank ihre eigene Sortierung hat, die "Sortierregeln, Groß- und Kleinschreibung und Akzentempfindlichkeitseigenschaften für Ihre Daten bereitstellt" (von http://technet.microsoft.com/en-us/library/ms143726.aspx ) und gilt für Spalten mit Textdatentypen , z.B. VARCHAR
, CHAR
, NVARCHAR
usw. Wenn zwei Datenbanken unterschiedliche Sortierungen haben, können Sie Textspalten nicht mit einem Operator wie Gleichheit (=) vergleichen, ohne den Konflikt zwischen den beiden unterschiedlichen Sortierungen zu lösen.