Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Изхвърлете всички таблици, чиито имена започват с определен низ

Може да се наложи да модифицирате заявката, за да включите собственика, ако има повече от един в базата данни.

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

Това е по-чисто от използването на подход в две стъпки на генериране на скрипт плюс изпълнение. Но едно от предимствата на генерирането на скриптове е, че ви дава възможност да прегледате цялото това, което ще се изпълнява, преди действително да се изпълни.

Знам, че ако щях да направя това срещу производствена база данни, щях да бъда възможно най-внимателен.

Редактиране Извадка от код е фиксирана.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да върнете нарастващ номер на група за група в SQL

  2. SQL Server 2016:Създайте съхранена процедура

  3. Получаване на странна грешка, SQL Server заявка с помощта на клауза `WITH`

  4. Настройка на изчакване за SQL Server

  5. INFORMATION_SCHEMA срещу sysobjects