[CodeSnippet] Borrar masivamente procedimientos almacenados
Iniciamos una nueva sección en el blog, llamada Code Snippets, serán pequeñas porciones de código simples o algunas marcianas, pero que siempre son útiles, ya se para el trabajo, para preparar un demo, o un código rebuscado.
Problema: He restaurado una base de datos usando la herramienta SQL Database Publishing, para una demostración, y estoy actualizando/recreando los store procedures, y el problema era que deseaba eliminar masivamente los store procedures, que tengan un determinado patrón. Puedes 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, y esta es la que vamos a explotar.
Plataforma: SQL Server 2005, query a nivel de base de datos.
1: use dbGeekProducts
2: go
3: DECLARE @SPs varchar(max)
4: SET @SPs = ''
5: SELECT @SPs = @SPs + [name] + ',' FROM sys.objects
6: WHERE type = 'P' AND name LIKE 'usp_%'
7:
8: SELECT @SPs
9: go
En mi caso yo quiero eliminar todos los store procedures de una base de datos que empiecen con el nombre "usp_%". El detalle de DROP PROC, es que no acepta strings o variables, si no nombres de objetos. De ahí el tip de hacer SELECT @SPs. Copio el resultado del SELECT, remuevo la última coma, y lo pego dentro del siguiente código:
1: DROP PROC usp_Product_Insert,usp_Product....
2: go
Si alguien tiene alguna otra o mejor forma, favor de comentarlo :D.
P.D.: Imagino que con VS for Database Professionals, puede hacer esto con shift/control select.
Saludos,