Tengo una tabla que contiene más de 10.000 filas y quiero cambiar una columna de un tipo de datos numérico a un tipo de datos flotante. ¿Cómo puedo realizar el cambio con el menor impacto en la disponibilidad de los datos?
Tiene tres opciones para cambiar el tipo de datos de la columna. Una, puede utilizar una sentencia SELECT como
SELECT a,b,c,CAST(d AS float) AS N'd',e,f,g INTO dbo.newtable
A continuación, utilice sp_rename para renombrar la tabla antigua, renombrar newtable como la tabla antigua y restablecer sus permisos e índices. Una segunda opción es utilizar el comando ALTER TABLE para cambiar el tipo de datos de la columna, utilizando la siguiente sintaxis para ALTER TABLE:
ALTER TABLE <table>\{ \ ) \]
O, como tercera opción, puede utilizar el programa de copia masiva (bcp) para copiar los datos, luego eliminar la tabla, crear la nueva tabla, utilizar bcp para copiar los datos en la nueva tabla y restablecer los permisos e índices.
Típicamente, recomendaría usar la opción ALTER TABLE, especialmente si sólo tienes unos pocos miles de filas de datos, porque esta solución no afecta a los permisos. Sin embargo, el uso del comando ALTER TABLE sí afecta a la disponibilidad de los datos, por lo que probablemente no quiera utilizarlo durante el horario de trabajo habitual o si tiene millones de filas en la tabla.
Para obtener más información, visite «Nuevos y geniales metadatos de SQL Server 2012» y «Generador de informes y bases de datos de modelos tabulares».
Patrick Conlan
Administrador de programas de plataformas,
Equipo de proyectos de Microsoft