Es común que para realizar algunas pruebas sobre Base de Datos hagamos una réplica de la misma y la vaciemos de datos. Por ejemplo pasar los datos de un entorno de pre Producción a Producción.
El problema viene cuando tenemos una base de datos pesada, con muchas tablas y datos, y nos toca o bien lanzar un script de creación de tablas vacías (que en ocasiones no respeta claves ajenas, índices, etc.) o bien ejecutar sentencias TRUNCATE a mano.
Bien, pues me he puesto a investigar un poco y he logrado un script en T-SQL para SQL SERVER que recorre las tablas de una base de datos, elimina las restricciones (para que no falle al borrar datos de una tabla relacionada con otra), hace un TRUNCATE de la tabla y vuelve a restablecer las restricciones tal cual estaban.
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL' GO EXEC sp_MSForEachTable 'ALTER TABLE ? DISABLE TRIGGER ALL' GO EXEC sp_MSForEachTable 'BEGIN TRY TRUNCATE TABLE ? END TRY BEGIN CATCH DELETE FROM ? END CATCH;' EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL' GO EXEC sp_MSForEachTable 'ALTER TABLE ? ENABLE TRIGGER ALL' GO
De este modo tendríamos la tablas vacías de datos pero respetando su estructura, restricciones, relaciones, vistas, procedimientos almacenados, etc.
Espero que te sea útil! Desde luego a mi me ha ahorrado unas horas de trabajo.
Si quieres más trucos de este tipo te invito a echarle un vistazo a este Nuevo libro de SQL Server 2014 en Español
Comprar en Amazon | Comprar en Google Play |
Sensacional script, a mi tambien me va ahorrar muchas horas de trabajo 😀
Funciona perfecto gracias
buenas noches,,,,,ami no corrio, tengo la duda en donde especifico la base de datos a limpiar amigo…muchas gracias
saludos
Anda de 10! muchas gracias!