04/07/11

Come Eliminare SP,View e Function dinamicamente

Delle volte potrebbe essere utile eliminare tutte le Stored procedure, Viste e funzioni contenute nel database.
Una delle prime soluzioni a cui si potrebbe arrivare è ciclare sulle liste di oggetti restituite dalle varie information_schema. Ma SQL è concepito per pensare "set based" e quindi potremmo sfruttare questa sua caratteristica per riuscire a formattare con un'unica query le istruzioni di drop.
Con lo script seguente otteniamo esattamente ciò che ci siamo prefissati, un'unica query che mi restituisca tutte le istruzioni di drop necessarie.
Le istruzioni saranno poi eseguite grazie alla EXEC.



DECLARE @strSql VARCHAR(MAX) = ''
SET @strSql = (
SELECT 'DROP ' + OBJTYPE + ' [' + OBJSCHEMA + '].[' + OBJNAME + ']; ' FROM
(
SELECT ROUTINE_TYPE OBJTYPE,ROUTINE_SCHEMA OBJSCHEMA,
ROUTINE_NAME OBJNAME
FROM INFORMATION_SCHEMA.ROUTINES
UNION
SELECT TABLE_TYPE, TABLE_SCHEMA, TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'VIEW'
) OBJ
FOR XML PATH ('')
)
EXEC(@strSql)



Vi consiglio di approfondire la "FOR XML PATH('')" che potrebbe tornare molto utile....

Ciao

Luca

0 commenti:

Posta un commento

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Grants For Single Moms