Nếu bạn cần trả lại danh sách tất cả CHECK
các ràng buộc đã bị vô hiệu hóa trong cơ sở dữ liệu SQL Server, bạn có thể chạy mã T-SQL bên dưới.
Ví dụ 1 - Chỉ trả lại Ràng buộc KIỂM TRA đã bị vô hiệu hóa
Truy vấn này chỉ trả về CHECK
bị vô hiệu hóa các ràng buộc trong cơ sở dữ liệu hiện tại. Nó trả về tên ràng buộc, tên của bảng mà nó được áp dụng và định nghĩa của ràng buộc.
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', definition FROM sys.check_constraints WHERE is_disabled = 1;
Kết quả:
+----------------+-----------------+-------------------------------+ | Table | Constraint | definition | |----------------+-----------------+-------------------------------| | ConstraintTest | chkValidEndDate | ([EndDate]>=[StartDate]) | | Occupation | chkJobTitle | ([JobTitle]<>'Digital Nomad') | +----------------+-----------------+-------------------------------+
Điều này truy vấn sys.check_constraints
chế độ xem hệ thống. Chúng tôi biết nó chỉ trả về các ràng buộc bị vô hiệu hóa vì WHERE
mệnh đề chỉ định các hàng có is_disabled
cột được đặt thành 1
.
Nếu bạn muốn trả lại tất cả đã bật CHECK
ràng buộc, chỉ cần thay đổi 1
thành 0
.
Ví dụ 2 - Trả lại tất cả các ràng buộc của CHECK
Truy vấn sau trả về tất cả CHECK
các ràng buộc đối với cơ sở dữ liệu hiện tại (không chỉ những hạn chế bị vô hiệu hóa). Lần này tôi trả về is_disabled
để chứng minh nơi truy vấn trước đó lấy giá trị của nó từ đâu:
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trusted FROM sys.check_constraints;
Kết quả:
+----------------+-----------------+---------------+------------------+ | Table | Constraint | is_disabled | is_not_trusted | |----------------+-----------------+---------------+------------------| | ConstraintTest | chkPrice | 0 | 0 | | ConstraintTest | chkValidEndDate | 1 | 1 | | ConstraintTest | chkTeamSize | 0 | 0 | | Occupation | chkJobTitle | 1 | 1 | +----------------+-----------------+---------------+------------------+
Tôi cũng đã bao gồm is_not_trusted
trong truy vấn này. Cần thận trọng khi lưu ý đến giá trị này, vì một ràng buộc có thể vẫn không đáng tin cậy ngay cả khi nó đã được kích hoạt lại. Để có một cuộc thảo luận chi tiết (và các ví dụ) về cờ này, hãy xem Những gì bạn nên biết về VỚI NOCHECK khi bật Ràng buộc CHECK trong SQL Server.