Gru�
Peter
>ich m?chte den Datentyp in 2 Spalten (S1,S2) einer Tabelle von SMALLINT auf
>NVARCHAR ?ndern. Der maximale Wert des Integers ist 100.
>Ich habe es mit ALTER TABLE myTab ALTER COLUMN S1 nvarchar, probiert bekomme
>aber einen arithmetischen ?berlauffehler
Wenn sowas nicht direkt gehen sollte:
1. S1 nach S1old umbenennen
2. S1 als nvarchar anlegen
3. update tabelle set S1 = cast(S1old as ...) (oder wie auch immer)
4. S1old wegwerfen
Grüße, Torsten
Am 15.10.2010 14:15, schrieb Peter Witt:
> ich mᅵchte den Datentyp in 2 Spalten (S1,S2) einer Tabelle von SMALLINT auf
> NVARCHAR ᅵndern. Der maximale Wert des Integers ist 100.
> Ich habe es mit ALTER TABLE myTab ALTER COLUMN S1 nvarchar, probiert bekomme
> aber einen arithmetischen ᅵberlauffehler
Wild Guess: Hinter nvarchar fehlt die Lᅵngenangabe:
ALTER TABLE table_1 ALTER COLUMN Wert nvarchar
Meldung 8115, Ebene 16, Status 2, Zeile 1
Arithmetischer ᅵberlauffehler beim Konvertieren von expression in den
nvarchar-Datentyp.
Die Anweisung wurde beendet.
ALTER TABLE table_1 ALTER COLUMN Wert nvarchar(2)
Befehl(e) wurde(n) erfolgreich abgeschlossen.
Falls Du Zugriff auf das SQL Server Management Studio hast: Ich finde
bei solchen Sachen folgendes immer ganz erhellend:
- Rechtsklick im Objekt-Exporer auf Tabellennamen und 'Entwerfen' auswᅵhlen
- Gewᅵnschte ᅵnderung vornehmen, aber nicht(!) speichern
- Rechtsklick auf den freien Bereich und 'ᅵnderungsskript generieren...'
auswᅵhlen
Da sieht man dann, wie das Management Studio so etwas umsetzen wᅵrde
(neue Tabelle mit korrektem Datentyp generieren, Daten rᅵberkopieren und
die Spalte dabei umwandeln, alte Tabelle lᅵschen, neue Tabelle umbenennen).
hth,
Wolf