Top-Themen

Aktuelle Themen (A bis Z)

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 2) - Jetzt verbinden

28.09.2012 um 20:39 Uhr, 2692 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 ..
Ähnliche Inhalte
Windows Server
SQL Server 2008 R2
gelöst Frage von Marcel94Windows Server1 Kommentar

Hallo Zusammen, habe ein kleines Problem bezgl. einer SQL Server 2008 R2 Installation. Zu meiner Frage. Habe soweit alles ...

Datenbanken
Microsoft SQL Server Feld mit Trigger aktualisieren
Frage von ursus57Datenbanken3 Kommentare

Ich habe folgendes Problem: Systemumgebung: Micrsosoft SQL Server 2008 Express mit Management Studio Express, ERP Lösung mit SQL Datenbank ...

Windows Server
SQL Server 2008 Berechtigungen
gelöst Frage von homermgWindows Server15 Kommentare

Hey Leute, ich spiele gerade mit einem Sql Server 2008 rum. Irgendwie blicke ich nicht so ganz bei den ...

Visual Studio
Error: C2065 - for each Char in Char Array
gelöst Frage von DarkproduktVisual Studio

Guten Abend, ich versuche gerade meiner Textbox eine "Maske" zu verpassen. Ich weis es gibt auch MaskedTextBox aber diese ...

Neue Wissensbeiträge
Mac OS X

MacOS wo ist die Tilde ?

Tipp von Alchimedes vor 54 MinutenMac OS X

Hallo, ich hab eine MacOS qwertz Keyboard auf US Layout umgestellt da die Sonderzeichen besser ereichbar sind. Leider fehlt ...

Datenschutz

Weitere Inforamtionen zum Sicherheitsproblem BeA

Information von Penny.Cilin vor 7 StundenDatenschutz

Im folgenden ein weiterer Bericht über die Sicherheitsprobleme von Bea. Fataler Konstruktionsfehler im besonderen elektronischen Anwaltspostfach Gruss Penny

Windows 10

Systemdienste behalten nach Win10 inplace-Upgrade nicht die ggf. modifizierte Startart bei

Tipp von DerWoWusste vor 9 StundenWindows 103 Kommentare

Stellt Euch vor, Ihr habt ein Win10 System und modifiziert dort die Startart von Systemdiensten. Zum Beispiel wollt Ihr ...

Microsoft Office

Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei

Anleitung von SarekHL vor 12 StundenMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Microsoft Office
Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei
Anleitung von SarekHLMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von fyrb38Windows 1017 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...