EMail senden Mail an den Autor Drucken

vorhergehender Eintrag

nächster Eintrag

Inhalt

Hilfe Index

.

SQL Server

Umlaute auf SQL Datenbank richtig stellen

Unbedingt eine Sicherung machen

In diesem Kapitel

Ursache

Script - Umlaute richtig stellen

Weitere Kapitel

Datenmigration von mySQL nach MSSQL

Neue Auswertungen

Datenbank kopieren

SQL Scripts

Trigger

Kplus SQL Server Funktionen

Kplus Datenbankanbindung fixieren

Falsche Collate auf der Datenbank

Aufmass (BAU_CODE) richtig stellen

Sql Script - Update von Lohnbuchungen von einem Benutzer zu einem anderen Benutzer

vorhergehender Eintrag

nächster Eintrag

Inhalt

Ursache

Damals wurden die Umlaute in der SQL Datenbank durch die Charmaps in Kplus falsch gespeichert.

Dadurch dass nun eine Direktbelieferung der Cognos Datenbank über Trigger erfolgt, müssen die Zeichensätze in der SQL Datenbank richtig gespeichert werden.

Wenn man also die aktuellsten Charmaps für Kplus verwendet muss man auch die SQL Datenbank umstellen.

vorhergehender Eintrag

nächster Eintrag

Inhalt

Script - Umlaute richtig stellen

Um die Daten in der Datenbank richtig darzustellen muss man als erstes folgenden Script im Microsoft SQL Management Studio ausführen.

ab MSSQL 2005

select 'update ' + sys.objects.name +

' set ' + sys.columns.name + '=replace(replace(replace(replace(replace(replace(replace(' + sys.columns.name + ' COLLATE Latin1_General_CS_AS,''†'',''Ü''),''…'',''Ö''),''€'',''Ä''),''Ÿ'',''ü''),''š'',''ö''),''Š'',''ä''),''§'',''ß'');'

from sys.columns

inner join sys.objects on sys.objects.object_id=sys.columns.object_id

inner join sys.types on sys.types.system_type_id = sys.columns.system_type_id and sys.types.name IN('varchar','char')

where sys.objects.type='u'

UNION

select 'update ' + sys.objects.name +

' set ' + sys.columns.name + '=replace(replace(replace(replace(replace(replace(replace(cast(' + sys.columns.name + ' COLLATE Latin1_General_CS_AS as varchar(max)),''†'',''Ü''),''…'',''Ö''),''€'',''Ä''),''Ÿ'',''ü''),''š'',''ö''),''Š'',''ä''),''§'',''ß'');'

from sys.columns

inner join sys.objects on sys.objects.object_id=sys.columns.object_id

inner join sys.types on sys.types.system_type_id = sys.columns.system_type_id and sys.types.name IN('text')

where sys.objects.type='u'

für MSSQL 2000 dieses Script verwenden

select 'update ' + sysobjects.name +

' set ' + syscolumns.name + '=replace(replace(replace(replace(replace(replace(replace(' + syscolumns.name + ',''†'',''Ü''),''…'',''Ö''),''€'',''Ä''),''Ÿ'',''ü''),''š'',''ö''),''Š'',''ä''),''§'',''ß'');'

from syscolumns

inner join sysobjects on sysobjects.id=syscolumns.id

inner join systypes on systypes.xtype = syscolumns.xtype and systypes.name IN('varchar','char')

where sysobjects.type='u'

Das Ergebnis muss man dann in eine neue Query Abfrage einfügen und ausführen.

Achtung: Das kann recht lange dauern und den Server auslasten.

update D_BAUKOLLPOS set BKO_INFO=replace(replace(replace (replace(replace(replace(replace(cast(BKO_INFO as varchar(max)) COLLATE Latin1_General_CS_AS,'†','Ü'),'…','Ö'),'€','Ä'), 'Ÿ','ü'),'š','ö'),'Š','ä'),'§','ß');

Zum Seitenanfang Drucken