Como eliminar masivamente tablas y procedimientos de una base de datos MS SQL

 


Esto se puede hacer a través de un procedimiento almacenado sencillo sp_MSforeachtable,  es un procedimiento almacenado oculto in SQL Server, el cuál se ejecuta por cada tabla que hay en la base de datos activa. Hay que tener en cuenta que esa operación no se puede deshacer, así que hay que estar seguro de lo que se quiere hacer.
Para borrar una sola tabla 
Hacemos 
Drop Table NombreTabla
Go

El tema es cuando queremos borrar muchas tablas o la totalidad de las tablas.

 Vamos a ver un procedimiento que borra todas las tablas que no tengan integridad referencial, si hay integridad referencial hay que hacer mas pasos que veremos mas adelante.





Vamos al sector de programación de la base

y creamos un store procedure con esta sentencia

EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"

sp_MSforeachtable,  es un procedimiento almacenado oculto in SQL Server, el cuál se ejecuta por cada tabla que hay en la base de datos activa. Hay que tener en cuenta que esa operación no se puede deshacer, así que hay que estar seguro de lo que se quiere hacer.

Si hay problemas con el comando anterior es porque seguramente hay reglas de integridad entre las tablas y por eso no las puede borrar. En ese caso lo mejor es hacer mejor lo siguiente:

  1. -- Primero desabilitar la integridad referencial 

EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL' 

GO

EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"

GO


    2. -- Ahora volver a habilitar la integridad referencial

EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL' 

GO

Para borrar un procedimiento Almacenado hacemos

DROP PROCEDURE dbo.uspMyProc; GO

Se puede eliminar los store procedures, desde SQL Server Managment Studio, haciendo clic derecho sobre el procedure, y seleccionando delete pero uno por uno, si hubiera un shift select/delete, y la otra forma, hasta donde se :$ , es haciéndolo por código. 


Usando Transact-SQL

  1. Para eliminar un procedimiento en el Editor de consultas
  2. En el Explorador de objetos, conéctese a una instancia de Motor de base de datos y luego expanda esa instancia.
  3. Expanda Bases de datos, expanda la base de datos a la que pertenece el procedimiento o, desde la barra de herramientas, seleccione la base de datos de la lista de bases de datos disponibles.
  4. En el menú Archivo, haga clic en Nueva consulta.
  5. Obtenga el nombre del procedimiento almacenado para eliminar en la base de datos actual. Desde el Explorador de objetos, expanda Programabilidad y luego expanda Procedimientos almacenados. Alternativamente, en el editor de consultas, ejecute la siguiente declaración.
  6. Copie y pegue el siguiente ejemplo en el editor de consultas e inserte un nombre de procedimiento almacenado para eliminarlo de la base de datos actual.

SELECT name AS procedure_name   

    ,SCHEMA_NAME(schema_id) AS schema_name  

    ,type_desc  

    ,create_date  

    ,modify_date  

FROM sys.procedures; 



Con este procedimiento obtenmos el nombre de todos los stored procedures de nuestra base.

En mi caso tengo que eliminar 5000 procedimientos asi que me ayudo con el excel para generar el segundo procediento

Copy pasteamos la lista a nuestro excel usando la funcion CONCATENAR

=CONCATENAR(A1;B1;C1) 

podemos armar el stored procedure que necesitamos

en la primer columna ponemos 

dbo.

en la segunda el contendio que viene del procedimiento anterior

en la tercera coma

y en la ultima pegamos la formula de concatenar

y queda como la imagen que sigue







y luego la pegamos en el siguiente procemiento 

DROP PROCEDURE <stored procedure name>, GO


Porque podemos queres hacer esto y no sencillamente

una base de datos de 0?

Puede haber varias razones que queremos conservar

permisos y otras funciones triger, etc de una base

de datos existente... etc


Referencias

https://infoinnova.net/2013/09/t-sql-eliminar-todas-las-tablas-de-una-base-de-datos/

DROP PROCEDURE (Transact-SQL) - SQL Server | Microsoft Docs

https://geeks.ms/sergiotarrillo/2008/05/26/codesnippet-borrar-masivamente-procedimientos-almacenados/#:~:text=Puedes%20eliminar%20los%20store%20procedures,la%20que%20vamos%20a%20explotar.

Comentarios

Entradas populares de este blog

¿Qué es la JCAHO Joint Commission on Accreditation of Healthcare Organizations?

PARSEO DEL CODIGO PDF417 DEL DNI ARGENTINO

¿Como instalar El Cliente de SOPHOS VPN ?