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.
Usaré esta declaración TSQL:
ALTER TABLE MyTable
ALTER COLUMN [MyColumn] VARCHAR(1200)
Ya lo probé en una copia de los datos y esta declaración no tuvo efectos nocivos que pude ver.
Entonces, ¿hay algún problema posible al hacer esto que no haya considerado?
Por cierto, la columna no está indexada.
sql-server
sql-server-2008
varchar
alter-column
Paul T Davies
fuente
fuente
Respuestas:
Este 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, se ejecuta en osql y no en SSMS por alguna razón.
fuente
varchar(200)
avarchar(max)
?Solo quería agregar mis 2 centavos, ya que busqué en Google esta pregunta porque me encontré en una situación similar ...
TENGA EN CUENTA que, si bien cambiar de
varchar(xxx)
avarchar(yyy)
es un cambio de metadatos de hecho, cambiar avarchar(max)
no lo es. Porque losvarchar(max)
valores (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 fila". Entonces, el servidor se volverá loco en una mesa grande y no responderá durante 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 por supuesto.fuente
Cambiar a Varchar (1200) desde Varchar (200) no debería causarle ningún problema, ya que es solo un cambio de metadatos y como SQL Server 2008 trunca los espacios en blanco excesivos, tampoco debería ver diferencias de rendimiento, por lo que en resumen no debería haber problemas con cambio.
fuente
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).
fuente
En mi caso, la columna de modificación no funcionaba, por lo que se puede usar el comando 'Modificar', como:
modificar tabla [nombre_tabla] MODIFICAR columna [nombre_columna] varchar (1200);
fuente