Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Sortierungskonflikt kann nicht aufgelöst werden

Die Sache mit Sortierungen ist, dass, obwohl die Datenbank ihre eigene Sortierung hat, jede Tabelle und jede Spalte ihre eigene Sortierung haben kann. Wenn nicht angegeben, nimmt es den Standardwert seines übergeordneten Objekts, kann aber anders sein.

Wenn Sie die Sortierung der Datenbank ändern, wird dies der neue Standard für alle neuen Tabellen und Spalten, ändert jedoch nicht die Sortierung vorhandener Objekte in der Datenbank. Sie müssen die Sortierung jeder Tabelle und Spalte manuell ändern.

Glücklicherweise gibt es im Internet Skripte, die diese Aufgabe erledigen können. Ich werde keine empfehlen, da ich sie nicht ausprobiert habe, aber hier sind einige Links:

http://www.codeproject.com/Articles/302405/The-Easy-way-of-changing-Collation-of-all-Database

Aktualisieren Sie die Sortierung aller Felder in der Datenbank im Handumdrehen

http://www.sqlservercentral.com/Forums/Topic820675-146-1.aspx

Wenn Sie unterschiedliche Sortierungen für zwei Objekte benötigen oder Sortierungen nicht ändern können, können Sie immer noch JOIN zwischen ihnen mit COLLATE Befehl, und wählen Sie die Sortierung aus, die Sie verbinden möchten.

SELECT * FROM A JOIN B ON A.Text = B.Text COLLATE Latin1_General_CI_AS 

oder unter Verwendung der standardmäßigen Datenbanksortierung:

SELECT * FROM A JOIN B ON A.Text = B.Text COLLATE DATABASE_DEFAULT