A sintaxe especificada pela Microsoft para descartar uma parte da coluna de uma instrução ALTER é esta
DROP
{
[ CONSTRAINT ]
{
constraint_name
[ WITH
( <drop_clustered_constraint_option> [ ,...n ] )
]
} [ ,...n ]
| COLUMN
{
column_name
} [ ,...n ]
} [ ,...n ]
Observe que [, ... n] aparece após o nome da coluna e no final de toda a cláusula de descarte. O que isso significa é que existem duas maneiras de excluir várias colunas. Você pode fazer isso:
ALTER TABLE TableName
DROP COLUMN Column1, Column2, Column3
ou isto
ALTER TABLE TableName
DROP
COLUMN Column1,
COLUMN Column2,
COLUMN Column3
Essa segunda sintaxe é útil se você deseja combinar a queda de uma coluna com a eliminação de uma restrição:
ALTER TBALE TableName
DROP
CONSTRAINT DF_TableName_Column1,
COLUMN Column1;
Ao descartar colunas, o SQL Sever não recupera o espaço ocupado pelas colunas descartadas. Para tipos de dados armazenados em linha nas linhas (int por exemplo), pode até ocupar espaço nas novas linhas adicionadas após a instrução alter. Para contornar isso, você precisa criar um índice em cluster na tabela ou reconstruir o índice em cluster, se ele já tiver um. A reconstrução do índice pode ser feita com um comando REBUILD após modificar a tabela. Mas esteja avisado que isso pode ser lento em mesas muito grandes. Por exemplo:
ALTER TABLE Test
REBUILD;