varias una tamaño tabla posicion modificar maximo editar como columnas columna campo cambiar aumentar ampliar actualizar sql-server sql-server-2008 varchar alter-column

sql server - posicion - Al aumentar el tamaño de la columna VARCHAR en una tabla grande, ¿podría haber algún problema?



nvarchar vs varchar sql server (5)

Cambiar a Varchar (1200) desde Varchar (200) no debería causar ningún problema, ya que es solo un cambio de metadatos y como SQL Server 2008 trunca excesivamente los espacios en blanco, no debería haber diferencias de rendimiento, así que en resumen no debería haber problemas para hacer el cambio.

Estoy usando SQL Server 2008 y necesito hacer un campo VARCHAR más grande, de (200 a 1200) en una tabla con aproximadamente 500k filas. Lo que necesito saber es si hay algún problema que no haya considerado.

Voy a utilizar esta declaración de TSQL:

ALTER TABLE MyTable ALTER COLUMN [MyColumn] VARCHAR(1200)

Ya lo probé en una copia de los datos y esta afirmación no tuvo efectos negativos que pudiera ver.

Entonces, ¿hay algún problema posible al hacer esto que no haya considerado?

Por cierto, la columna no está indexada.


En mi caso, la columna alter no funcionaba, así que uno puede usar el comando ''Modificar'', como:

alter table [table_name] MODIFY column [column_name] varchar (1200);


Esto es solo un cambio de metadatos: es rápido.

Una observación: especifique NULL o NOT NULL explícitamente para evitar "accidentes" si una de las configuraciones de SET ANSI_xx es diferente, por ejemplo, ejecutarse en osql y no en SSMS por algún motivo


Otra razón por la que debe evitar convertir la columna a varchar (max) es porque no puede crear un índice en una columna varchar (max).


Solo quería agregar mis 2 centavos, ya que busqué en Google esta pregunta b / c Me encontré en una situación similar ...

TEN EN CUENTA que al cambiar de varchar(xxx) a varchar(yyy) es un cambio de metadatos, pero cambiar a varchar(max) no lo es. Debido a que los valores varchar(max) (también conocidos como valores BLOB - imagen / texto, etc.) se almacenan de manera diferente en el disco, no dentro de una fila de la tabla, sino "fuera de la fila". Entonces el servidor se volverá loco en una gran mesa y dejará de responder por minutos (horas).

--no downtime ALTER TABLE MyTable ALTER COLUMN [MyColumn] VARCHAR(1200) --huge downtime ALTER TABLE MyTable ALTER COLUMN [MyColumn] VARCHAR(max)

PD. lo mismo se aplica a nvarchar o curso.