Синтаксис, указанный Microsoft для отбрасывания части столбца оператора ALTER , следующий:
DROP
{
[ CONSTRAINT ]
{
constraint_name
[ WITH
( <drop_clustered_constraint_option> [ ,...n ] )
]
} [ ,...n ]
| COLUMN
{
column_name
} [ ,...n ]
} [ ,...n ]
Обратите внимание, что [, ... n] появляется после обоихимя столбца и в конце целого предложения удаления.Это означает, что существует два способа удаления нескольких столбцов.Вы можете сделать это:
ALTER TABLE TableName
DROP COLUMN Column1, Column2, Column3
или это
ALTER TABLE TableName
DROP
COLUMN Column1,
COLUMN Column2,
COLUMN Column3
Этот второй синтаксис полезен, если вы хотите объединить удаление столбца с удалением ограничения:
ALTER TBALE TableName
DROP
CONSTRAINT DF_TableName_Column1,
COLUMN Column1;
При удалении столбцов SQL Sever не освобождает пространство, занимаемое удаленными столбцами.Для типов данных, которые хранятся в строках (например, int), он может даже занимать место в новых строках, добавленных после оператора alter.Чтобы обойти это, вам нужно создать кластеризованный индекс в таблице или перестроить кластеризованный индекс, если он уже есть.Перестройка индекса может быть выполнена с помощью команды REBUILD после изменения таблицы.Но имейте в виду, что это может быть медленным на очень больших столах.Например:
ALTER TABLE Test
REBUILD;