2016-08-02 20 views
6

Tôi có khoảng 50 bảng trong cơ sở dữ liệu của tôi bây giờ những gì tôi muốn là thả tất cả các bảng trong cơ sở dữ liệu ngoại trừ vài.Xóa tất cả các bảng trong cơ sở dữ liệu SQL Server ngoại trừ số ít

bây giờ những gì tôi biết là sys.tables là một bảng liệt kê tất cả các bảng vì thế ban đầu tôi chạy một truy vấn như thế này

delete from sys.tables where name like '%DynamicSurgery' (or any other condition) 

nghĩ rằng nó có thể làm việc. Nhưng như tôi mong đợi, nó sẽ phát ra lỗi là

Không được phép cập nhật các bản cập nhật quảng cáo vào danh mục hệ thống.

Hãy cho tôi biết nếu có cách xóa bội số trong SQL Server?

+1

Trang web thử nghiệm và phát triển? Có một kịch bản để tạo lại cơ sở dữ liệu. Bắt đầu lại khi cần thiết. – jarlh

+1

Bạn có thể viết một con trỏ để lặp qua sys.tables, nơi bạn xây dựng các câu lệnh 'drop table' và thực thi chúng. – HoneyBadger

Trả lời

10

Bạn có thể sử dụng truy vấn động DROP bảng yêu cầu:

DECLARE @ExecSQL AS NVARCHAR (MAX) = ''; 

SELECT @ExecSQL = @ExecSQL + 
    'DROP TABLE ' + QUOTENAME(S.name) + '.' + QUOTENAME(T.name) + '; ' 
FROM sys.tables T 
JOIN sys.schemas S ON S.schema_id = T.schema_id 
WHERE T.name LIKE '%DynamicSurgery' 

--PRINT @ExecSQL 
EXEC (@ExecSQL) 
+6

Bạn * phải * khai báo biến là 'NVARCHAR' vì tên bảng có thể chứa các ký tự Unicode. Bạn * nên * làm cho '@ ExecSQL' có chiều dài' (MAX) 'bởi vì bạn không biết số lượng các bảng (do đó chiều dài của SQL). Và bạn * nên * sử dụng 2 tên phần 'QUOTENAME (schema) + '.' + QUOTENAME (tên) 'bởi vì các bảng có thể thuộc về các lược đồ khác nhau. Và bạn * phải * tham chiếu các bảng và cột hệ thống bằng cách họ sửa tên, ** bao gồm cả trường hợp **, ví dụ của bạn sẽ thất bại trong trường hợp DB collation nhạy cảm. –

+1

@RemusRusanu: Cảm ơn bạn đã thông báo. Các điểm nói trên được sửa chữa. – Arulkumar

+0

Cảm ơn đã giải quyết được sự cố của tôi –

-3
  1. chọn bảng bằng cách nhấp vào nó
  2. nhấn nút xóa và nhấn Enter. Lưu ý: nếu có bất kỳ phụ thuộc nào (Khóa Ngoại), bảng sẽ không bị xóa
Các vấn đề liên quan