En nuestra base de datos existe una gran tabla que se ve más o menos así:
CREATE TABLE dbo.production_data
(
pd_id BIGINT PRIMARY KEY,
serial NVARCHAR(16) NOT NULL UNIQUE,
...
);
pero ahora el tamaño del campo en serie se ha reducido, por lo que quiero cambiarlo a 32. La herramienta de comparación de esquemas de Visual Studio sugiere hacer esto de la siguiente manera:
DROP INDEX ux_production_data_serial ON dbo.production_data;
GO
ALTER TABLE dbo.production_data ALTER COLUMN serial NVARCHAR(32) NOT NULL;
GO
CREATE INDEX ux_production_data_serial ON dbo.production_data(serial ASC);
¿Es esto realmente necesario? ¿O más como una forma ultra salva de hacer esto?
Además, al recrear el índice único, ¿se bloqueará mi tabla? Porque esto sería un gran problema (ya que la tabla tiene 30 millones de filas y supongo que volver a crear el índice llevará bastante tiempo), porque la próxima ventana de mantenimiento es de unos meses en el futuro. ¿Cuales son mis alternativas?