T-SQL: Eliminar todos los registros de todas las tablas de una base de datos SQL Server

·2 min de lectura·

SQL ServerEs 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 SQL Server 2014 | Amazon Kindle

Comprar en Google Play SQL Server 2014 | Google Play Books

Comentarios (0)

Sé el primero en comentar.

T-SQL: Re-Indexar todas las tablas de una Base de Datos

·1 min de lectura

El artículo explica cómo re‑indexar todas las tablas de una base de datos SQL Server cuando no existe un comando único para ello. Se presenta un script TSQL que recorre el catálogo de datos, obtiene los nombres de todas las tablas base y ejecuta DBCC DBREINDEX para cada una, evitando mensajes de información. El cursor se cierra y libera al finalizar. El autor sugiere que el código sea útil y menciona un libro de SQL Server 2014 en español como recurso adicional.

Instalando SQL Server en Linux

·3 min de lectura

Microsoft lanzó una versión de SQL Server para Linux, lo que permite a los administradores instalar, usar y mantener el motor en sistemas como Red Hat Enterprise Linux 7, CentOS 7 y Ubuntu 16.04 64 bits. Se requiere al menos 4 GB de RAM. El proceso en Ubuntu implica agregar la clave GPG, añadir el repositorio, actualizar paquetes, instalar dependencias y ejecutar el script de configuración, aceptando los términos de licencia. Una vez instalado, se puede conectar con la línea de comandos, crear bases de datos y usar los mismos comandos que en Windows.