Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Supprimer toutes les tables dont les noms commencent par une certaine chaîne

Vous devrez peut-être modifier la requête pour inclure le propriétaire s'il y en a plusieurs dans la base de données.

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

C'est plus propre que d'utiliser une approche en deux étapes de génération de script et d'exécution. Mais l'un des avantages de la génération de scripts est qu'elle vous donne la possibilité de revoir l'intégralité de ce qui va être exécuté avant qu'il ne soit réellement exécuté.

Je sais que si je devais faire cela avec une base de données de production, je serais aussi prudent que possible.

Modifier Échantillon de code corrigé.