Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Bỏ tất cả các bảng có tên bắt đầu bằng một chuỗi nhất định

Bạn có thể cần sửa đổi truy vấn để bao gồm chủ sở hữu nếu có nhiều hơn một trong cơ sở dữ liệu.

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

Điều này rõ ràng hơn so với việc sử dụng phương pháp tiếp cận hai bước là tạo tập lệnh cộng với chạy. Nhưng một lợi thế của việc tạo tập lệnh là nó cho bạn cơ hội để xem lại toàn bộ những gì sẽ được chạy trước khi nó thực sự chạy.

Tôi biết rằng nếu tôi định làm điều này với cơ sở dữ liệu sản xuất, tôi sẽ cẩn thận nhất có thể.

Chỉnh sửa Đã sửa mẫu mã.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các cột tổng hợp động trong SQL Server

  2. Truy vấn SQL Server:Nhanh với Literal nhưng chậm với Variable

  3. hiển thị nhiều bản ghi bằng cách sử dụng tập kết quả

  4. STRING_SPLIT () trong SQL Server 2016:Tiếp theo # 1

  5. Cú pháp không chính xác gần từ khóa 'with' ... câu lệnh trước đó phải được kết thúc bằng dấu chấm phẩy