Startseite
  Archiv
  Gästebuch
  Kontakt
 


 

Webnews

Webnews



http://myblog.de/almpeter

Gratis bloggen bei
myblog.de





 
SQL Server Zeichensatz Problem

Werden wir etwas technischer!

Es gibt in unserem Unternehmen seit über 10 Jahren eine Software, die als Warenwirtschaftsprogramm arbeitet. Seitdem wächst und wächst logischerweise die Datenbank. Mittlerweile sind es ca. 4 GB. Ebenfalls wurde die zugrundeliegende Technologie seither auf neuestem Stand gehalten: Seit Microsoft SQL - lasst mich lügen - Version 6.5. Dann weiter zu SQL Server 7, SQL Server 2000 und hoffentlich bald SQL-Server 2005 (immerhin ist für 2008 schon die nächste Generation geplant, um der Datenwut Herr zu werden!).

Ok, die Datenbank ist immer mitgekommen. Die erste Installation des SQL-Servers wurde mit einem SQL-Zeichensatz durchgeführt, der "non unicode" war. Es war einer der "SQL-Server-850-CI-AS" Zeichensätze oder ähnliches. Auf jeden Fall "non unicode". Das bedeutet, dass im Programm selbst alle Zeichen gut aussahen, bei Abfragen in der Datenbank aber (z.B. mit einem Business Intelligence Tool), wurden die deutschen Sonderzeichen wie "Ä, ö, ß, ü" usw. als falsche Zeichen interpretiert. Wilde schwarze Blöcke, Striche und was es nicht alles gibt. Ein buntes Etwas. Das geht natürlich gar nicht.

Des Weiteren war der Zeitpunkt gekommen, da Software anderer Hersteller an das System angebunden werden sollten, also eine Datenkommunikation auftritt. Das bedeutet also für das System, dass der Zeichensatz bereinigt werden muss.

Wie tue ich das? Wir haben viel philosophiert und ausprobiert. Ein Backup und Restore auf einem Server mit Unicode-Zeichensatz der Datenbank tut es nicht. Das Problem blieb. Des Weiteren kam hinzu, dass die Spaltendefinition der Datenbank nicht im "nvarchar" usw. Format sind, sondern im älteren "varchar", "text" usw.

Der Weg wurde also klarer. Man muss nur den Content  der Tabellen, Sichten, Prozeduren etc. kopiereren, aber nicht die Datenbank an sich. Mit dem Enterprise Manager des SQL-Servers 2000 kam man zu keinem Ergebnis. Ständig Fehler und Abbrüche.

Daher ging ich mit meinem Kollegen folgende Lösung an:

Wir haben eine leere Datenbank auf einem SQL-Server 2005 erzeugt - Sortierungssatz: "Latin1_General_CI_AS". Also Standard (heutzutage).

Dann haben wir mit dem Management Studio des SQL-2005ers ein Export der Sichten und Tabellen aus der alten in die neue Datenbank durchgeführt. Danach braucht man noch die Prozeduren, Systemtabellen, evtl. Trigger und Benutzer (halt allen anderen Content). Dazu haben wir mit Hilfe wiederum des Management Studios und der Funktion "Skript generieren" auf unsere Ursprungsdatenbank angewendet. Dieses Skript baut nun die SQL-Befehle in eine Abfrage auf, welche genau diesen fehlenden Content erstellt. Danach nimmt man diese Abfrage und ersetzt gegebenenfalls alle "Alte-Datenbank" Namen durch "Neue-Datenbank" Namen. Dieses Skript nimmt man nun und spielt es auf die NEUE Datenbank auf. Danach sollte man A) alle Sichten und Tabellen sowie B) alle 'Programmierbarkeit' Inhalte der Ursprungsdatenbank wiederhersgestellt haben.

Zum krönenden Abschluss nehmen man die CLient-Server Applikation und binde die neue Datenbank ein.

Schwupps: Wir haben eine korrekte Darstellung ALLER Sonderzeichen, da wir jetzt einen Unicode-Sortiersatz haben und die Applikation hat durch unseren Kleinen Eingriff auch keinen Schaden erlitten.  

Wenn es dazu Fragen gibt, dann schreibt einfach einen Kommentar dazu. 

14.5.07 21:04





Verantwortlich für die Inhalte ist der Autor. Dein kostenloses Blog bei myblog.de! Datenschutzerklärung
Werbung