Ändern der Spaltengröße in SQL Server


Antworten:


505
ALTER TABLE [Employee]
ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL

6
Seien Sie vorsichtig, wenn Sie eine Spalte in einer sehr großen Datentabelle ändern. Sie können einen Absturz verursachen (in meiner Umgebung sowieso).
DavidTheDev

55
Es ist auch wichtig, dass die Spalte mit dem Attribut NOT NULLin der Abfrage erwähnt wird, andernfalls wird sie NULLstandardmäßig festgelegt. ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
Suvendu Shekhar Giri

8
Wenn Sie einen Index für diese Spalte haben, müssen Sie ihn
löschen



19

Das Ausführen ALTER COLUMNohne Erwähnung des Attributs NOT NULLführt dazu, dass die Spalte in nullable geändert wird, sofern dies noch nicht der Fall ist. Daher müssen Sie zuerst prüfen, ob die Spalte nullwertfähig ist, und wenn nicht, ein Attribut angeben NOT NULL. Alternativ können Sie die folgende Anweisung verwenden, die die Nullfähigkeit der Spalte im Voraus überprüft und den Befehl mit dem richtigen Attribut ausführt.

IF COLUMNPROPERTY(OBJECT_ID('Employee', 'U'), 'Salary', 'AllowsNull')=0
    ALTER TABLE [Employee]
        ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
ELSE        
    ALTER TABLE [Employee]
        ALTER COLUMN [Salary] NUMERIC(22,5) NULL

6

Wählen Sie Tabelle -> Design -> Wert im Datentyp ändern (siehe folgende Abbildung).

Geben Sie hier die Bildbeschreibung ein

Speichern Sie das Tabellen-Design.


Überprüfen Sie richtig, ob Ihnen ein Schritt fehlt.
Arnav

7
Extras -> Optionen ... /> Designer -> Tabellen- und Datenbankdesigner - Deaktivieren Sie "Speichern von Änderungen verhindern, die eine
Neuerstellung der

Für die meisten Dinge bevorzuge ich Skripte. Aber für Spaltenänderungen mag ich die Benutzeroberfläche. Sie müssen nicht daran denken, nach NOT NULL oder Berechnungen oder zusätzlichen Spalteneigenschaften zu suchen. Klicken Sie einfach auf Speichern (nachdem Sie die Einstellungen in SSMS als @ 7anner-Notizen geändert haben).
Jacob H

1

Ein interessanter Ansatz ist hier zu finden: So vergrößern Sie Ihre Spalten ohne Ausfallzeiten von spaghettidba

Wenn Sie versuchen, diese Spalte mit einem direkten Befehl "ALTER TABLE" zu vergrößern, müssen Sie warten, bis SQLServer alle Zeilen durchläuft und den neuen Datentyp schreibt

ALTER TABLE tab_name ALTER COLUMN col_name new_larger_data_type;

Um diese Unannehmlichkeiten zu überwinden, gibt es eine magische Pille zur Spaltenvergrößerung, die Ihr Tisch einnehmen kann und die als Zeilenkomprimierung bezeichnet wird. (...) Mit der Zeilenkomprimierung können Ihre Spalten mit fester Größe nur den Platz belegen, den der kleinste Datentyp benötigt, in den die tatsächlichen Daten passen.

Wenn die Tabelle auf ROWEbene komprimiert wird, ALTER TABLE ALTER COLUMNhandelt es sich nur um eine Metadatenoperation.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.