Alterar el tamaño de la columna en SQL Server

Respuestas:

507
ALTER TABLE [Employee]
ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
Darren
fuente
66
Tenga cuidado, si está cambiando una columna en una tabla de datos muy grande. Puede causar un bloqueo (en mi entorno de todos modos).
DavidTheDev
55
También es importante que si la columna tiene un atributo NOT NULL, debe mencionarse en la consulta; de lo contrario, la establecerá de forma NULLpredeterminada. ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
Suvendu Shekhar Giri
8
Si tiene un índice en esa columna, tendrá que soltarlo, luego ejecutar el código alter table y luego crear el índice nuevamente
Sr.PEDRO
43
alter table Employee alter column salary numeric(22,5)
Priyank Patel
fuente
21
ALTER TABLE [table_name] ALTER COLUMN [column_name] varchar(150)
Durgesh Pandey
fuente
19

Si se ejecuta ALTER COLUMNsin mencionar el atributo NOT NULL, la columna se cambiará a anulable, si ya no lo es. Por lo tanto, primero debe verificar si la columna es anulable y, de lo contrario, especificar el atributo NOT NULL. Alternativamente, puede usar la siguiente instrucción que verifica la nulabilidad de la columna de antemano y ejecuta el comando con el atributo correcto.

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
fuente
6

Seleccione la tabla -> Diseño -> cambie el valor en el Tipo de datos que se muestra en la siguiente Fig.

ingrese la descripción de la imagen aquí

Guardar tablas de diseño.

arnav
fuente
compruebe correctamente si puede faltar algún paso.
arnav
77
Herramientas -> Opciones ... /> Diseñadores -> Diseñadores de tablas y bases de datos - desmarque "Evitar guardar cambios que requieren recreación de tablas"
7anner
Para la mayoría de las cosas, prefiero las secuencias de comandos. Pero para los cambios de columna, me gusta la interfaz de usuario. No es necesario que recuerde verificar NOT NULL o cualquier cálculo o propiedades de columna adicionales. Simplemente haga clic en Guardar (después de realizar el cambio de configuración en SSMS como @ 7anner notes).
Jacob H
1

Enfoque interesante se puede encontrar aquí: Cómo ampliar sus columnas sin tiempo de inactividad por spaghettidba

Si intenta ampliar esta columna con un comando directo "ALTER TABLE", tendrá que esperar a que SQLServer recorra todas las filas y escriba el nuevo tipo de datos

ALTER TABLE tab_name ALTER COLUMN col_name new_larger_data_type;

Para superar este inconveniente, hay una píldora mágica de ampliación de columna que su mesa puede tomar, y se llama Compresión de fila. (...) Con la compresión de filas, las columnas de tamaño fijo solo pueden usar el espacio necesario para el tipo de datos más pequeño donde se ajustan los datos reales.

Cuando la tabla se comprime en el ROWnivel, entonces ALTER TABLE ALTER COLUMNes solo una operación de metadatos.

Lukasz Szozda
fuente