Vaciar todas las tablas de una Base de Datos 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
No hay comentarios:
Publicar un comentario