Изменение размера столбца в SQL Server

Ответы:

507
ALTER TABLE [Employee]
ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
Даррен
источник
6
Будьте осторожны, если вы изменяете столбец в очень большой таблице данных. Вы можете вызвать сбой (в любом случае, в моей среде).
DavidTheDev
55
Также важно, что если столбец имеет атрибут, NOT NULLто он должен быть указан в запросе, иначе он будет установлен NULLпо умолчанию. ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
Сувенду Шекхар Гири
8
Если у вас есть индекс для этого столбца, вам придется его удалить, затем выполнить код таблицы изменений и затем снова создать индекс
Sr.PEDRO
43
alter table Employee alter column salary numeric(22,5)
Приянк Патель
источник
21
ALTER TABLE [table_name] ALTER COLUMN [column_name] varchar(150)
Дургеш Пандей
источник
19

Запуск ALTER COLUMNбез упоминания атрибута NOT NULLприведет к тому, что столбец будет заменен на nullable, если это уже не так. Следовательно, вам нужно сначала проверить, может ли столбец обнуляться, а если нет, указать атрибут NOT NULL. В качестве альтернативы вы можете использовать следующий оператор, который предварительно проверяет обнуляемость столбца и запускает команду с правильным атрибутом.

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

Выберите таблицу -> Дизайн -> изменить значение в Типе данных, показанном на следующем Рис.

введите описание изображения здесь

Сохранить дизайн таблиц.

arnav
источник
проверьте, возможно, вы пропустили какой-то шаг.
Арнав
7
Инструменты -> Параметры ... /> Дизайнеры -> Дизайнеры таблиц и баз данных - снимите флажок "Запретить сохранение изменений, которые требуют пересоздания таблицы"
января
Для большинства вещей я предпочитаю писать сценарии. Но для изменений столбцов мне нравится пользовательский интерфейс. Не забывайте проверять наличие NOT NULL или каких-либо вычислений или каких-либо дополнительных свойств столбца. Просто нажмите Сохранить (после внесения изменений в SSMS как примечания @ 7anner).
Джейкоб Х,
1

Интересный подход можно найти здесь: Как увеличить ваши столбцы без простоя от spaghettidba

Если вы попытаетесь расширить этот столбец прямой командой «ALTER TABLE», вам придется подождать, пока SQLServer пройдет по всем строкам и запишет новый тип данных.

ALTER TABLE tab_name ALTER COLUMN col_name new_larger_data_type;

Чтобы преодолеть это неудобство, есть волшебная таблетка для увеличения колонны, которую может принять ваш стол, и она называется « Сжатие строк». (...) При сжатии строк столбцы с фиксированным размером могут использовать только пространство, необходимое для наименьшего типа данных, в который помещаются фактические данные.

Когда таблица сжимается на ROWуровне, ALTER TABLE ALTER COLUMNэто только операция с метаданными.

Лукаш Шозда
источник