René Pacios

/* Overflow My Brain & More */

Vaciar todas las tablas de una Base de Datos SQL Server

Esta va a ser la primera, espero que de muchas, entrada donde comentaré un pequeño truquillo para eliminar todos los registros de todas las tablas de una base de datos de SQL Server.
Es muy corriente que mientras estamos desarrollando o haciendo pruebas hagamos inserciones, modificaciones y demás, y dejemos la base de datos llena de registros sin sentido. No voy a entrar si usamos Objetos tipo Mock o no,vamos a suponer que estamos desarrollando nuestro "programa de videoclub" para clase y  hacemos pruebas a medida que desarrollamos.
Para eliminar todos los registros de las tablas podríamos utilizar un cursor sobre  las tablas obtenidas de  sys.objects, y ejecutar SQL dinámico vaciando así las tablas y teniendo cuidad del orden para cumplir con las restricciones, etc.
Sin embargo SQL Server posee un par de procedimientos almacenados, no documentados en los libros online de SQL Server , bastante curiosos que nos van a servir para simplificar nuestro trabajo. Estos son sp_MSforeachtable y sb_MSforeachdb
que tal y como se infiere por el nombre de los mismos nos va a permitir aplicar un comando o un conjunto de ellos a todas las tablas de una base de datos o a todas las bases de datos de una instancia de SQL Server.Para nuestro el caso que nos concierne, vamos a utilizar el primer procedure, primero veamos el script


Como se puede apreciar en el ejemplo, lo primero que se debe hacer es deshabilitar todos los triggers y las restricciones de cada tabla para evitar efectos colaterales provocados por el borrado en cada tabla.
A continuación se eliminan los datos de cada una de las tablas.
Acto seguido, volvemos a habilitar las restricciones de tipo check y los triggers para que la Base de Datos sigua funcionando con normalidad.
Espero que os resulte de utilidad, y por otro lado también aprovecho que donde mejor que en el blog para dejar mis chuletas. :-)

Nos leemos, René Pacios









Acerca de René

René Pacios es un apasionado de la tecnología, autodidacta, emprendedor, le encanta el desarrollo web, para moviles, aplicaciones, todo aquello que automatice tareas y haga que las máquinas trabajen para él. Es un gran fan de las tecnologías Microsoft, y le encanta estar a la última siempre que el tiempo se lo permite. Siempre quiso ser cantante, pero creo que en esta vida se va a quedar sólo en canta-mañanas

No hay comentarios:

Publicar un comentario