Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Usuń wszystkie tabele, których nazwy zaczynają się od określonego ciągu

Może być konieczne zmodyfikowanie zapytania, aby zawierało właściciela, jeśli w bazie danych jest więcej niż jeden.

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

Jest to czystsze niż dwuetapowe podejście polegające na generowaniu skryptu i uruchomieniu. Ale jedną z zalet generowania skryptów jest to, że daje możliwość sprawdzenia całości tego, co ma zostać uruchomione, zanim zostanie faktycznie uruchomione.

Wiem, że gdybym miał to zrobić na produkcyjnej bazie danych, byłbym tak ostrożny, jak to tylko możliwe.

Edytuj Poprawiono próbkę kodu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zwrócić wartość Unicode dla danego znaku w SQL Server – UNICODE()

  2. Jak działa funkcja CHAR() w SQL Server (T-SQL)

  3. Jak połączyć serwer sql z php za pomocą xampp?

  4. Data i godzina rzutowania SQL

  5. jak znaleźć rozmiar wiersza w tabeli