sql >> Databáze >  >> RDS >> Sqlserver

Zrušte všechny tabulky, jejichž názvy začínají určitým řetězcem

Pokud je v databázi více než jeden, možná budete muset upravit dotaz tak, aby zahrnoval vlastníka.

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

To je čistší než použití dvoukrokového přístupu generování skriptu plus spuštění. Jednou z výhod generování skriptů je však to, že vám dává možnost prohlédnout si celý obsah toho, co bude spuštěno, ještě předtím, než bude skutečně spuštěn.

Vím, že kdybych to chtěl udělat proti produkční databázi, byl bych tak opatrný, jak je to jen možné.

Upravit Ukázka kódu opravena.



  1. Mějte PL/SQL výstupy v reálném čase

  2. SQLite žádný takový sloupec

  3. Setkání na pracovišti:Rekultivace prostoru z příliš velké databáze

  4. Tipy pro zámky čtení/zápisu v závislosti na úrovni izolace transakcí v MSSQL