Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Elimina tutte le tabelle i cui nomi iniziano con una determinata stringa

Potrebbe essere necessario modificare la query per includere il proprietario se ce n'è più di uno nel database.

DECLARE @cmd varchar(4000)
DECLARE cmds CURSOR FOR
SELECT 'drop table [' + Table_Name + ']'
FROM INFORMATION_SCHEMA.TABLES
WHERE Table_Name LIKE 'prefix%'

OPEN cmds
WHILE 1 = 1
BEGIN
    FETCH cmds INTO @cmd
    IF @@fetch_status != 0 BREAK
    EXEC(@cmd)
END
CLOSE cmds;
DEALLOCATE cmds

Questo è più pulito rispetto all'utilizzo di un approccio in due passaggi di generazione di script più esecuzione. Ma uno dei vantaggi della generazione dello script è che ti dà la possibilità di rivedere l'intero processo che verrà eseguito prima che venga effettivamente eseguito.

So che se dovessi eseguire questa operazione su un database di produzione, sarei il più attento possibile.

Modifica Esempio di codice corretto.