sql >> Base de Datos >  >> RDS >> Sqlserver

Elimina todas las tablas cuyos nombres comiencen con una determinada cadena

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.