Ändern der Spaltengröße in SQL Server

281

So ändern Sie die Spaltengröße der salarySpalte in der employeeTabelle von numeric(18,0)bisnumeric(22,5)

Sree
quelle

Antworten:

505
ALTER TABLE [Employee]
ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
Darren
quelle
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
43
alter table Employee alter column salary numeric(22,5)
Priyank Patel
quelle
21
ALTER TABLE [table_name] ALTER COLUMN [column_name] varchar(150)
Durgesh Pandey
quelle
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
Hamid Heydarian
quelle
6

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

Geben Sie hier die Bildbeschreibung ein

Speichern Sie das Tabellen-Design.

Arnav
quelle
Ü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.

Lukasz Szozda
quelle