Ich habe eine temporäre Tabelle, die Daten mithilfe von Masseneinfügung einfügt. Wenn ich jedoch Daten aus der temporären Tabelle in eine normale Tabelle aktualisieren möchte, führt dies zu Sortierproblemen. Ich weiß, wie diese zu lösen, indem sie mit so etwas wie:Korrekter Weg zur Festlegung der Kollatierung in der temporären Tabellenspalte TSQL
UPDATE RegularTable
SET r.Column1 = t.ColumnA
FROM RegularTable r INNER JOIN #TEMP t ON
r.Column1 COLLATE DATABASE_DEFAULT =
t.ColumnA COLLATE DATABASE_DEFAULT
Aber ist es eine Möglichkeit, die Sortierung in der temporären Tabelle zu setzen sofort, so dass Sie müssen nicht in der Join collate verwenden? Etwas wie:
CREATE TABLE #TEMP
Column1 varchar(255) COLLATE database_default,
Column2 varchar(60)
Ist das korrekt Codierung und müssen Sie die Sortierung einmal pro Tabelle oder pro Spalte festlegen? Und wenn die Sortierung in der Tabelle festgelegt ist, können Sie dann die Sortierung von der Verknüpfung ausschließen?
Danke @Christian Hayter, also, wenn ich COLLATE database_default für jede Spalte gesetzt habe, muss ich nicht mehr die Kollation im Join verwenden? Nur aus Neugier, gibt es eine Möglichkeit zu sehen, was die Standard-Server-Sortiereinstellung ist? – J3FFK
@ J3FFK: Das ist richtig. Was die Anzeige der aktuellen Kollatierung anbelangt, bin ich mir sicher, dass es eine T-SQL-Funktion gibt, um sie zu erhalten, aber normalerweise öffne ich einfach den Datenbankeigenschaften-Dialog in Management Studio. :-) –
@ J3FFK: Sie können die db Kollation von 'master.sys.databases.collation_name' lesen –