it-swarm.com.de

SQL Server Management Studio - So ändern Sie einen Feldtyp, ohne die Tabelle zu löschen

Wenn Sie in SQL Server Management Studio ein vorhandenes Feld in der Entwurfsansicht von DECIMAL (16,14) in DECIMAL (18,14) ändern, kann ich nicht speichern, ohne die gesamte Tabelle und alle Daten zu löschen. 

Kann ein Feldtyp geändert werden, sobald eine Datenbank mit Datensätzen gefüllt ist? 

21
Prometheus

Verwenden Sie einfach ein T-SQL-Skript anstelle des visuellen Designers, um Ihr Ziel zu erreichen:

ALTER TABLE dbo.YourTableNameHere
ALTER COLUMN YourColumnNameHere DECIMAL(18, 14) 

und es sollte dir gut gehen.

Der visuelle Designer nimmt den besonders vorsichtigen Weg, die Tabelle mit der neuen Struktur zu erstellen und dann alle Daten zu kopieren - es funktioniert, aber es ist langweilig. Solange Sie eine Spalte nicht abschneiden (kürzer machen), können Sie normalerweise den Datentyp der Spalte "in place" mithilfe einer T-SQL-Anweisung ändern.

Außerdem: Standardmäßig ist der SSMS-Designer besonders vorsichtig und lässt keine Änderungen zu, für die ein Tabellenzyklus zum Ablegen und erneuten Erstellen erforderlich ist. Sie können diese zusätzliche Vorsicht in Tools > Options und dann in diesem Dialogfeld deaktivieren:

enter image description here

Wenn Sie diese Option deaktivieren, können Sie in Ihrem visuellen Designer "destruktive" Änderungen vornehmen

54
marc_s

Designer löscht die Tabelle auch dann, wenn die Option in SSMS nicht markiert ist. Es wird Sie beim nächsten Mal einfach nicht dazu auffordern. Um dies zu beweisen, starten Sie den SQL-Profiler und ändern Sie eine Spalte mit dem SSMS-Designer. Daraufhin wird vor dem Ausführen des Befehls "Tabelle ändern" ein Befehl zum Löschen der Tabelle angezeigt.

0
user6710238