length - varchar sql
Varchar(255) a Varchar(MAX) (3)
¿Es posible cambiar un tipo de columna en una base de datos de SQL Server 2008 de varchar(255)
a varchar(MAX)
sin tener que descartar la tabla y volver a crearla?
SQL Server Management Studio me lanza un error cada vez que trato de hacerlo con eso, pero para ahorrarme un dolor de cabeza sería bueno saber si puedo cambiar el tipo sin tener que DROP y CREAR.
Gracias
''No se permite guardar cambios. Los cambios que ha realizado requieren que las siguientes tablas se eliminen y se vuelvan a crear. O bien ha realizado cambios en una tabla que no se puede volver a crear o habilitado la opción Evitar guardar los cambios que requieren que la tabla se vuelva a crear ". La opción ''Evitar guardar cambios'' no está habilitada ..
Esa es una nueva "característica" en SQL Server Management Studio 2008 que, de forma predeterminada, está activada. Cada vez que realiza un cambio mayor, SSMS solo puede recrear la tabla creando una nueva y luego moviéndose sobre los datos de la anterior, todo en el fondo (esos cambios incluyen el reordenamiento de sus columnas, entre otras cosas).
Esta opción está desactivada de forma predeterminada, ya que si su tabla tiene restricciones de FK y otras cosas, esta forma de volver a hacer la tabla puede fallar. ¡Pero definitivamente puedes activar esa característica!
texto alt http://i42.tinypic.com/19pegj.png
Se encuentra en Tools > Options
y una vez que desmarca esa opción, puede hacer este tipo de cambios en la estructura de la tabla nuevamente en el diseñador de tablas.
Deberías poder hacerlo usando TSQL.
Algo como
ALTER TABLE [table] ALTER COLUMN [column] VARCHAR(MAX)
Estar atentos
con algo como
ALTER TABLE [table] ALTER COLUMN [column] VARCHAR(MAX)
https://dba.stackexchange.com/questions/15007/change-length-of-varchar-on-live-prod-table
La respuesta de Martin Smith:
Si lo aumenta a varchar(100 - 8000)
(es decir, cualquier otra cosa que no sea varchar(max))
y lo hace a través de TSQL en lugar de la GUI de SSMS
ALTER TABLE YourTable ALTER COLUMN YourCol varchar(200) [NOT] NULL y no alterar la nulabilidad de la columna de NULL
a NOT NULL
(lo que bloquearía la tabla mientras todas las filas se validen y se escriban o NOT NULL
desde NOT NULL
a NULL
en algunas circunstancias, esto es un cambio rápido de metadatos. Es posible que tenga que esperar una SCH-M
bloqueo SCH-M
en la mesa, pero una vez que adquiera que el cambio será prácticamente instantáneo. Una advertencia a tener en cuenta es que durante la espera de un bloqueo SCH-M
bloquearán otras consultas en lugar de saltar la cola por delante. por lo que es posible que desee considerar agregar primero un SET LOCK_TIMEOUT
. También asegúrese de que en la declaración ALTER TABLE
especifique explícitamente NOT NULL
si ese es el estado de la columna original, de lo contrario, la columna se cambiará para permitir NULL
.