Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Semi-automatisches umstellen von CHAR in NVARCHAR Felder im SQL Server 2008

Frage Entwicklung Datenbanken

Mitglied: Rene1976

Rene1976 (Level 1) - Jetzt verbinden

28.09.2012 um 20:39 Uhr, 2652 Aufrufe, 3 Kommentare


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
Mitglied: MadMax
01.10.2012 um 17:59 Uhr
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:
01.
select	* 
02.
from	information_schema.columns 
03.
where	objectproperty (object_id (table_name), 'IsUserTable') = 1 and data_type = 'char' 
04.
order by table_name, ordinal_position
Und über diese Sichten kannst Du Dir auch Skripte zusammenstellen, die die Spalten abändern:
01.
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  
02.
from	information_schema.columns 
03.
where	objectproperty (object_id (table_name), 'IsUserTable') = 1 and data_type = 'char' 
04.
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
Bitte warten ..
Mitglied: Rene1976
02.10.2012 um 13:01 Uhr
Hi Max,

vielen Dank für die Antwort. Ich werde es mal so ausprobieren.

Weiß du ob der SQL Server irgendwo auch abgespeichert hat, wann einen Spalte in einer Tabelle neu angelegt wurde, bzw. wann ihr Datentyp geändert wurde.
Gibt es so ein Protokoll?

Grüße,

Rene
Bitte warten ..
Mitglied: MadMax
02.10.2012 um 19:20 Uhr
Hallo Rene,

soweit ich weiß, gibt es diese Information nicht. Für Tabellen oder andere Objekte gibt es diese Angabe aber für einzelne Spalten nicht.

Gruß, Mad Max
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Server
SQL Server 2008 R2 SP3 neue Instanz (10)

Frage von technikdealer zum Thema Windows Server ...

Microsoft
gelöst DRINGEND: Suche Microsoft SQL SERVER 2008 R2 STANDARD Eval (8)

Frage von Xaero1982 zum Thema Microsoft ...

Datenbanken
gelöst 1GB phpMyAdmin SQL Datei in SQL Server 2008 R2 importieren (7)

Frage von Himpke zum Thema Datenbanken ...

Windows 10
gelöst SQL Server 2008 R2 kompatibel mit Windows 10? (14)

Frage von Sachellen zum Thema Windows 10 ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...