Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Elimine todas as tabelas cujos nomes comecem com uma determinada string


Pode ser necessário modificar a consulta para incluir o proprietário se houver mais de um no banco de dados.
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

Isso é mais limpo do que usar uma abordagem de duas etapas de gerar script e executar. Mas uma vantagem da geração de script é que ela lhe dá a chance de revisar a totalidade do que vai ser executado antes de realmente ser executado.

Eu sei que se eu fosse fazer isso em um banco de dados de produção, eu seria o mais cuidadoso possível.

Editar Amostra de código corrigida.