Es posible que deba modificar la consulta para incluir al propietario si hay más de uno en la base de datos.
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
Esto es más limpio que usar un enfoque de dos pasos de generar script más ejecutar. Pero una ventaja de la generación de secuencias de comandos es que le da la oportunidad de revisar la totalidad de lo que se va a ejecutar antes de que se ejecute realmente.
Sé que si fuera a hacer esto contra una base de datos de producción, sería lo más cuidadoso posible.
Editar Ejemplo de código arreglado.