tipos length declarar datos data sql types varchar

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 .