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.