Zmiana rozmiaru kolumny w SQL Server

Odpowiedzi:

507
ALTER TABLE [Employee]
ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
Darren
źródło
6
Zachowaj ostrożność, jeśli zmieniasz kolumnę w bardzo dużej bazie danych. Możesz spowodować awarię (i tak w moim środowisku).
DavidTheDev,
55
Ważne jest również, że jeśli kolumna ma atrybut, NOT NULLto musi być wymieniona w zapytaniu, w przeciwnym razie NULLdomyślnie ją ustawi . ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
Suvendu Shekhar Giri
8
Jeśli masz indeks w tej kolumnie, musisz go upuścić, a następnie wykonać kod tabeli zmian, a następnie ponownie utworzyć indeks
Sr.PEDRO,
43
alter table Employee alter column salary numeric(22,5)
Priyank Patel
źródło
21
ALTER TABLE [table_name] ALTER COLUMN [column_name] varchar(150)
Durgesh Pandey
źródło
19

Uruchomienie ALTER COLUMNbez wzmianki o atrybucie NOT NULLspowoduje zmianę kolumny na null, jeśli już nie jest. Dlatego musisz najpierw sprawdzić, czy kolumna ma wartość zerową, a jeśli nie, podaj atrybut NOT NULL. Alternatywnie możesz użyć poniższej instrukcji, która sprawdza wcześniej nullability kolumny i uruchamia polecenie z odpowiednim atrybutem.

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
źródło
6

Wybierz tabelę -> Projekt -> zmień wartość w typie danych pokazanym na poniższym ryc.

wprowadź opis zdjęcia tutaj

Zapisz projekt stołów.

arnav
źródło
sprawdź poprawnie, być może brakuje Ci jakiegoś kroku.
arnav
7
Narzędzia -> Opcje ... /> Projektanci -> Projektanci tabel i baz danych - odznacz „Zapobiegaj zapisywaniu zmian wymagających ponownego utworzenia tabeli”
stycznia
W większości przypadków wolę skrypty. Ale w przypadku zmian kolumn podoba mi się interfejs użytkownika. Nie musisz pamiętać o sprawdzeniu, czy nie ma wartości NULL, żadnych obliczeń ani dodatkowych właściwości kolumny. Po prostu kliknij Zapisz (po zmianie ustawień w SSMS jako notatki @ 7anner).
Jakub H
1

Ciekawe podejście można znaleźć tutaj: jak powiększyć kolumny bez przestoju autorstwa spaghettidba

Jeśli spróbujesz powiększyć tę kolumnę za pomocą prostej komendy „ALTER TABLE”, musisz poczekać, aż SQLServer przejdzie przez wszystkie wiersze i zapisze nowy typ danych

ALTER TABLE tab_name ALTER COLUMN col_name new_larger_data_type;

Aby przezwyciężyć tę niedogodność, istnieje magiczna pigułka na powiększanie kolumn, którą może wziąć twój stół, i nazywa się to kompresją rzędową. (...) Dzięki kompresji wierszy kolumny o stałym rozmiarze mogą zajmować tylko miejsce potrzebne najmniejszemu typowi danych, w którym mieszczą się rzeczywiste dane.

Gdy tabela jest kompresowana na ROWpoziomie, wówczas ALTER TABLE ALTER COLUMNoperacja dotyczy wyłącznie metadanych.

Łukasz Szozda
źródło