Semi-automatisches umstellen von CHAR in NVARCHAR Felder im SQL Server 2008
Hallo DB-Profis,
kennt jemand ein Tool, mit dem man schnell semi-automatisches Datenfelder z.B. von CHAR in NVARCHAR Felder im SQL Server 2008 umstellen kann.
Am besten wäre ein Tool, das mir alle Felder mit einem bestimmten Datentyp aus allen Tabellen einer DB anzeigen kann.
Dann sollte der DB Admin mit den Programmierer die Entscheidung fällen, welche Felder nacheinander umgestellt werden sollen / können.
Am besten wäre es natürlich, wenn nach der Auswahl das Feld bei Bedarf auch automatisch "getrimmt" werden kann.
Am Ende sollte auch noch ein Protokoll geschrieben werden, um die Änderungen später nachvollziehen zu können.
Kennt jemand so ein Tool mit dem man das effizient machen kann, bzw. das uns unterstützen kann?
Wir haben ca. 1500 alte CHAR Felder die mit der Zeit SICHER umgestellt werden sollen.
Vorweg:
Wir wissen was wir tun wollen und warum wir das tun wollen und wollen hier keine philosophische Debatte über den Sinn lostreten.
Wir haben auch schon oft Felder einzeln von Hand umgestellt und sind uns möglicher Konsequenzen bewusst und haben diese auch immer gemeistert.
Und natürlich soll die Umstellung auch ein Entwickler überwachen, der diese Felder angelegt hat, bzw. die Auswirkungen kennt / abschätzen kann.
Wir versprechen uns anschießend dadurch einige Erleichterungen bei der Programmierung, z.B.:
- weniger Trim Befehle im Code (werden gerne mal vergessen
)
- einfachere Spaltenvergleich über mehrere Tabellen hinweg (alte CHAR Tabellen mit neuen NVCHAR Tabellen)
- ...
Gerne würden wir auch die ntext Felder so loswerden und auf die neue Alternative nvarchar(Wert) umstellen um auch dort endlich SQL Befehle wie "order by" etc. verwenden zu können.
Besten Dank für euer Feedback.
Rene
kennt jemand ein Tool, mit dem man schnell semi-automatisches Datenfelder z.B. von CHAR in NVARCHAR Felder im SQL Server 2008 umstellen kann.
Am besten wäre ein Tool, das mir alle Felder mit einem bestimmten Datentyp aus allen Tabellen einer DB anzeigen kann.
Dann sollte der DB Admin mit den Programmierer die Entscheidung fällen, welche Felder nacheinander umgestellt werden sollen / können.
Am besten wäre es natürlich, wenn nach der Auswahl das Feld bei Bedarf auch automatisch "getrimmt" werden kann.
Am Ende sollte auch noch ein Protokoll geschrieben werden, um die Änderungen später nachvollziehen zu können.
Kennt jemand so ein Tool mit dem man das effizient machen kann, bzw. das uns unterstützen kann?
Wir haben ca. 1500 alte CHAR Felder die mit der Zeit SICHER umgestellt werden sollen.
Vorweg:
Wir wissen was wir tun wollen und warum wir das tun wollen und wollen hier keine philosophische Debatte über den Sinn lostreten.
Wir haben auch schon oft Felder einzeln von Hand umgestellt und sind uns möglicher Konsequenzen bewusst und haben diese auch immer gemeistert.
Und natürlich soll die Umstellung auch ein Entwickler überwachen, der diese Felder angelegt hat, bzw. die Auswirkungen kennt / abschätzen kann.
Wir versprechen uns anschießend dadurch einige Erleichterungen bei der Programmierung, z.B.:
- weniger Trim Befehle im Code (werden gerne mal vergessen
- einfachere Spaltenvergleich über mehrere Tabellen hinweg (alte CHAR Tabellen mit neuen NVCHAR Tabellen)
- ...
Gerne würden wir auch die ntext Felder so loswerden und auf die neue Alternative nvarchar(Wert) umstellen um auch dort endlich SQL Befehle wie "order by" etc. verwenden zu können.
Besten Dank für euer Feedback.
Rene
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 192003
Url: https://administrator.de/forum/semi-automatisches-umstellen-von-char-in-nvarchar-felder-im-sql-server-2008-192003.html
Ausgedruckt am: 21.04.2025 um 11:04 Uhr
3 Kommentare
Neuester Kommentar
Hallo Rene,
ein Tool in dem Sinne kann ich Dir nicht nennen, aber die Aufgabe läßt sich recht einfach über die Systemtabellen oder auch Information_Schema-Sichten erledigen.
Eine Liste der char-Spalten erhältst Du z.B. über die Sicht information_schema.columns:
Und über diese Sichten kannst Du Dir auch Skripte zusammenstellen, die die Spalten abändern:
Kann sein, daß in den Information_Schema-Sichten nicht alle Informationen drin sind, dann kann man auch auf die Systemtabellen zugreifen (sys.columns, sys.tables, sys.types, ...).
Gruß, Mad Max
ein Tool in dem Sinne kann ich Dir nicht nennen, aber die Aufgabe läßt sich recht einfach über die Systemtabellen oder auch Information_Schema-Sichten erledigen.
Eine Liste der char-Spalten erhältst Du z.B. über die Sicht information_schema.columns:
select *
from information_schema.columns
where objectproperty (object_id (table_name), 'IsUserTable') = 1 and data_type = 'char'
order by table_name, ordinal_position
Und über diese Sichten kannst Du Dir auch Skripte zusammenstellen, die die Spalten abändern:
select 'alter table ' + quotename (table_name) + ' alter column ' + quotename (column_name) + ' nvarchar (' + convert (varchar (5), character_maximum_length) + ') ' + case is_nullable when 'NO' then 'not null' else 'null' end
from information_schema.columns
where objectproperty (object_id (table_name), 'IsUserTable') = 1 and data_type = 'char'
order by table_name, ordinal_position
Kann sein, daß in den Information_Schema-Sichten nicht alle Informationen drin sind, dann kann man auch auf die Systemtabellen zugreifen (sys.columns, sys.tables, sys.types, ...).
Gruß, Mad Max