Zum Inhalt springen

Charset ändern? Daten aus 2 verschiedenen Datenbanken


ytmfb

Empfohlene Beiträge

Hallo,

ich soll in MSSQL ein Select erstellen das Daten von 2 verschiedenen Datenbanken miteinander verknüpft und bekomme folgende Fehlermeldung:

Ein Sortierungskonflikt zwischen "SQL_Latin1_General_CP1_CI_AS" und "Latin1_General_CI_AS" im equal to-Vorgang kann nicht aufgelöst werden.

Hab mir angelesen das man das Charset ändern muss, hat das schon mal jemand gemacht? Kann das Auswirkungen auf die Datenbank haben in Form von Folgen oder unerwünschten Effekten?

Bin in Sachen Datenbanken Anfänger ( 2.LJ Ausbildung ) und würde mich über ein wenig Hilfe freuen.

Gruß

YTMFB

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das Problem hat man öfter mit Daten aus anderssprachigen Systemen oder auch alten SQL-Server Datenbanken.

Die Sortierung der zu joinenden Spalten muss übereinstimmen/dem Server mitgeteilt werden.

Es gibt meist mehrere Stellen, an denen man eine (Standard-)Sortierung (Collation) einstellen kann - afair pro Server, Datenbank und Spalte.

Ändern geht generell per ALTER TABLE Anweisung - siehe Collation and Unicode Support

Bsp:


ALTER TABLE foo ALTER COLUMN bar char(8) COLLATE SQL_Latin1_General_CP1_CI_AS

ALTER TABLE bla ALTER COLUMN blub char(8) COLLATE Latin1_General_CI_AS
Wenn man die Standard-Collation der Datenbank nehmen möchte kann man auch "DATABASE_DEFAULT" statt z.B. "Latin1_General_CI_AS" schreiben. Alternativ zum Ändern der Tabelle kann man z.B. beim JOIN auch mittels COLLATE direkt angeben, wie man die Spalten behandeln möchte: Ein "kleines" Beispiel (ist doch länger geworden):

--drop table #foo

--drop table #bla


-- Wir legen zwei Tabellen an:

CREATE TABLE #foo (bar char(8))

CREATE TABLE #bla (blub char(8))



-- Setzen die Spalten auf unterschiedliche Sortierung:

ALTER TABLE #foo ALTER COLUMN bar char(8) COLLATE SQL_Latin1_General_CP1_CI_AS

ALTER TABLE #bla ALTER COLUMN blub char(8) COLLATE Latin1_General_CI_AS


-- Und fügen ein paar Werte ein:

INSERT INTO #foo (bar)  VALUES ('1'), ('2'), ('3'), ('ss')

INSERT INTO #bla (blub) VALUES ('1'), ('2'), ('3'), ('ß')


-- Und fragen ab:

--SELECT #foo.bar, #bla.blub FROM #foo 

--INNER JOIN #bla ON #foo.bar = #bla.blub -- Auskommentiert, würde fehlschlagen wegen unterschiedlicher Sortierung




SELECT #foo.bar, #bla.blub FROM #foo 

INNER JOIN #bla ON #foo.bar = #bla.blub COLLATE SQL_Latin1_General_CP1_CI_AS -- SQL_Latin1_General_CP1_CI_AS behandelt ss und ß unterschiedlich -> kein Treffer beim Join bei den letzten Zeilen!




SELECT #foo.bar, #bla.blub FROM #foo 

INNER JOIN #bla ON #foo.bar = #bla.blub COLLATE Latin1_General_CI_AS -- 'ss' und 'ß' sind hier gleichwertig!


Man beachte, dass in dem Beispiel die Collation Latin1_General_CI_AS bei CHAR keinen Unterschied zwischen 'ss' und 'ß' macht - bei NCHAR würde es wieder anders aussehen..

In anderen Sprachen gibt's noch viel mehr Spass mit Sortierungen :)

Man sollte sich die Sache mit den Sortierungen wirklich mal zu Gemüte führen und zumindest ansatzweise verstehen, was im Hintergrund passiert - wäre eigentlich Stoff für die Berufsschule..

Grüße

Sascha

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...