Necesito cambiar una columna de NOT NULL a NULL en una tabla que contiene millones de filas. He intentado un simple
alter table Table1 ALTER COLUMN Column1 XML NULL
Pero lleva una eternidad. Asi que aqui están mis preguntas:
- ¿Por qué lleva tanto tiempo aplicar el alter?
- Hay una mejor manera de hacerlo?
fuente
sp_rename
.Es necesario tocar cada fila al cambiar la columna de NOT NULL a NULL, por lo que se tarda tanto en completarse. No hay forma de hacer que tome menos tiempo.
fuente
Otra opción es crear una nueva columna con la definición correcta para la tabla en cuestión, actualizar la columna con los datos de la columna anterior y luego soltar la columna anterior.
O puede consultar una publicación anterior de SE que trata un problema similar en una columna INT.
/programming/4311559/sql-server-performance-for-alter-table-alter-column-change-data-type
fuente
Si abre el monitor de actividad de SQL mientras se ejecuta el comando, podrá saber si realmente lo está procesando o si está esperando algún tipo de bloqueo exclusivo de la tabla.
fuente