Zmiana rozmiaru kolumny w SQL Server


Odpowiedzi:


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

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,



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

6

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

wprowadź opis zdjęcia tutaj

Zapisz projekt stołów.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.