Proteger los datos durante una operación de cambio de nombre
Actualización: noviembre 2007
Cuando se cambia el nombre de un objeto de base de datos y se genera el proyecto de base de datos, se crea un script de implementación que refleja ese cambio. Cuando se cambia el nombre de una columna o tabla, el script quita la columna o tabla original con el nombre anterior y agrega la nueva columna o tabla con el nuevo nombre. Si implementa este cambio en la base de datos existente como una actualización, se perderán los datos de la columna o la tabla original.
Para controlar si se quita la columna o la tabla original debe establecer la opción adecuada en las propiedades del proyecto. La ficha Generar de las propiedades del proyecto contiene una casilla que se denomina Generar instrucciones DROP para objetos que están en la base de datos de destino pero no en el proyecto de base de datos. Si activa esta casilla, se incluye la instrucción drop para el objeto original en el script de implementación que se crea al generar el proyecto. Si desactiva la casilla, no se incluye la instrucción drop para el objeto original en el script de implementación que se crea al generar el proyecto.
Utilizar sp_rename
Puede editar manualmente el script de generación para convertir la acción de quitar o agregar la columna y la tabla a sp_rename.
Por ejemplo, puede especificar lo siguiente para una tabla:
sp_rename '<OLD TABLE NAME>', '<NEW TABLE NAME>', 'OBJECT'
Por ejemplo, puede especificar lo siguiente para una columna:
sp_rename '<TABLE NAME>.<OLD COLUMN NAME>', '<NEW COLUMN NAME>', 'COLUMN'
Para obtener más información, vea Cómo: Implementar cambios de refactorización de base de datos.
Mover datos entre los objetos originales y los nuevos
Para evitar la posible pérdida de datos que la instrucción drop podría provocar, puede elegir no implementar la instrucción drop. Tendrá copias del objeto original y el objeto nuevo en la base de datos de destino. Puede mover los datos del objeto original al objeto nuevo y, a continuación, quitar el objeto original. Para realizar esta tarea puede usar uno de los métodos siguientes:
Usar una instrucción select u otra instrucción T-SQL para mover manualmente los datos.
Por ejemplo, puede especificar lo siguiente para una tabla:
-- Deploy table add only. -- Move the data between the old and new tables. INSERT Region_New SELECT * FROM Region_Old -- Drop the old table manually. DROP TABLE Region_Old
Por ejemplo, puede especificar lo siguiente para una columna:
-- Deploy column add only. -- Move the data between the old and new columns. UPDATE Region SET ColumnNew = ColumnOld -- Drop the old column manually. ALTER TABLE Region DROP COLUMN ColumnOld
Ejecute la utilidad bcp, los Servicios de transformación de datos (SQL 2000) o SQL Server Integration Services (SQL 2005) para mover automáticamente los datos.
Mover datos utilizando un almacenamiento temporal
Para evitar la posible pérdida de datos que la instrucción drop podría provocar, puede mover los datos a un almacenamiento temporal. Antes de implementar el cambio, mueva los datos de la tabla original a una ubicación temporal. Por ejemplo, puede mover los datos a una tabla de una base de datos distinta o a un archivo de datos. A continuación, implemente las instrucciones drop y add. Por último, mueva los datos desde la ubicación temporal a la nueva tabla. Para realizar esta tarea puede usar uno de los métodos siguientes:
Usar una instrucción select into u otra instrucción T-SQL para mover manualmente los datos.
Por ejemplo, puede especificar lo siguiente para una tabla:
-- Move the data to temporary storage. SELECT * INTO TemporaryStorage.dbo.Region_Storage FROM Region_Old -- Deploy table drop/add. -- Move the data to the new table. INSERT Region_New SELECT * FROM TemporaryStorage.dbo.Region_Storage
Por ejemplo, puede especificar lo siguiente para una columna:
-- Move the data to temporary storage. SELECT * INTO TemporaryStorage.dbo.Region_Storage FROM Region -- Deploy column drop/add. -- Move the data to the new column. UPDATE Region SET ColumnNew = rs.ColumnOld FROM Region r JOIN TemporaryStorage.dbo.Region_Storage rs ON r.RegionID = rs.RegionID
Ejecute la utilidad bcp, los Servicios de transformación de datos (SQL 2000) o SQL Server Integration Services (SQL 2005) para mover automáticamente los datos.
Vea también
Tareas
Cómo: Controlar la pérdida de datos durante la implementación en bases de datos existentes
Otros recursos
Cambiar el nombre de objetos de base de datos
Información general sobre la refactorización de cambio de nombre