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

Làm cách nào để bỏ danh sách các bảng SQL Server, bỏ qua các ràng buộc?

Nó phụ thuộc vào cách bạn muốn bỏ các bảng. Nếu danh sách các bảng cần giảm bao phủ gần như trên 20% các bảng trong DB của bạn.

Sau đó, tôi sẽ vô hiệu hóa tất cả các ràng buộc trong DB đó theo tập lệnh của mình và thả các bảng và Bật các ràng buộc trong cùng một tập lệnh.

--To Disable a Constraint at DB level

EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'

--Write the code to DROP tables

DROP TABLE TABLENAME

DROP TABLE TABLENAME

DROP TABLE TABLENAME

--To Enable a Constraint at DB level

EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'

Cuối cùng để kiểm tra Trạng thái của các ràng buộc, hãy kích hoạt Truy vấn này.

--Checks the Status of Constraints

SELECT (CASE 
    WHEN OBJECTPROPERTY(CONSTID, 'CNSTISDISABLED') = 0 THEN 'ENABLED'
    ELSE 'DISABLED'
    END) AS STATUS,
    OBJECT_NAME(CONSTID) AS CONSTRAINT_NAME,
    OBJECT_NAME(FKEYID) AS TABLE_NAME,
    COL_NAME(FKEYID, FKEY) AS COLUMN_NAME,
    OBJECT_NAME(RKEYID) AS REFERENCED_TABLE_NAME,
    COL_NAME(RKEYID, RKEY) AS REFERENCED_COLUMN_NAME
FROM SYSFOREIGNKEYS
ORDER BY TABLE_NAME, CONSTRAINT_NAME,REFERENCED_TABLE_NAME, KEYNO

Nếu bạn không muốn vô hiệu hóa các ràng buộc ở cấp Cơ sở dữ liệu, hãy tạo danh sách các bảng mà bạn muốn bỏ.

Bước 1:Kiểm tra các Ràng buộc được liên kết với bảng thos

SELECT * 
FROM sys.foreign_keys
WHERE referenced_object_id = object_id('dbo.Tablename')

Bước 2:Vô hiệu hóa các Ràng buộc được liên kết với các bảng này.

ALTER TABLE MyTable NOCHECK CONSTRAINT MyConstraint

Bước 3:Bỏ bảng

DROP TABLE TABLENAME


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cuộc gọi ODBC không thành công với thủ tục được lưu trữ - Chuyển qua truy vấn

  2. Chọn số lượng từ một bảng khác cho mỗi hàng trong các hàng kết quả

  3. Mọi Bảng Người dùng có nên có Chỉ mục được phân cụm không?

  4. Tổng số phút giữa nhiều phạm vi ngày

  5. Giải pháp thay thế cho con trỏ để lặp sql là gì?