Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Löschen Sie alle Tabellen, deren Namen mit einer bestimmten Zeichenfolge beginnen

Möglicherweise müssen Sie die Abfrage ändern, um den Eigentümer einzubeziehen, wenn es mehr als einen in der Datenbank gibt.

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

Dies ist sauberer als die Verwendung eines zweistufigen Ansatzes aus Skript generieren und ausführen. Aber ein Vorteil der Skriptgenerierung ist, dass Sie die Möglichkeit haben, alles zu überprüfen, was ausgeführt werden soll, bevor es tatsächlich ausgeführt wird.

Ich weiß, dass ich so vorsichtig wie möglich sein würde, wenn ich dies gegen eine Produktionsdatenbank tun würde.

Bearbeiten Codebeispiel korrigiert.