Nếu bạn cần trả lại danh sách tất cả các ràng buộc khóa ngoại đã 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 các ràng buộc khóa ngoại bị vô hiệu hóa
Truy vấn này chỉ trả về các ràng buộc khóa ngoại bị vô hiệu hóa trong cơ sở dữ liệu hiện tại. Đối với ví dụ này, tôi chỉ trả về tên của ràng buộc, cùng với trạng thái bị vô hiệu hóa và đáng tin cậy của nó.
CHỌN tên AS 'Ràng buộc', is_disabled, is_not_trustedFROM sys.foreign_keysWHERE is_disabled =1;
Kết quả:
+ ------------------------ + --------------- + ----- ------------- + | Ràng buộc | is_disabled | is_not_trusted || ------------------------ + --------------- + ------ ------------ || FK_BandMember_Band | 1 | 1 || FK_BandMember_Musician | 1 | 1 | + ------------------------ + --------------- + ------ ------------ +
Điều này truy vấn sys.foreign_keys
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 chỉ muốn trả lại đã bật ràng buộc khóa ngoại, chỉ cần thay đổi 1
thành 0
.
Lưu ý rằng is_not_trusted
cờ cũng được đặt thành 1
cho những ràng buộc bị vô hiệu hóa này. Đó là bởi vì hệ thống không thể đảm bảo rằng ràng buộc đã kiểm tra tất cả dữ liệu. Điều này có ý nghĩa, bởi vì việc vô hiệu hóa một ràng buộc sẽ mở ra khả năng dữ liệu không hợp lệ vào cơ sở dữ liệu mà không được kiểm tra.
Đây là cùng một truy vấn, nhưng lần này tôi bao gồm bảng và bảng được tham chiếu cho mỗi ràng buộc:
CHỌN tên AS 'Constraint', OBJECT_NAME (parent_object_id) AS "Table", OBJECT_NAME (reference_object_id) AS "Referenced Table", is_disabled, is_not_trustedFROM sys.foreign_keysWHERE is_disabled =1;
Kết quả:
+ ------------------------ + ------------ + -------- ------------ + --------------- + ------------------ + | Ràng buộc | Bảng | Bảng tham chiếu | is_disabled | is_not_trusted || ------------------------ + ------------ + --------- ----------- + --------------- + ------------------ || FK_BandMember_Band | BandMember | Ban nhạc | 1 | 1 || FK_BandMember_Musician | BandMember | Nhạc sĩ | 1 | 1 | + ------------------------ + ------------ + --------- ----------- + --------------- + ------------------ +Ví dụ 2 - Trả lại tất cả các ràng buộc về khóa ngoại
Truy vấn sau trả về tất cả các ràng buộc khóa ngoại cho cơ sở dữ liệu hiện tại (không chỉ các ràng buộc bị vô hiệu hóa):
CHỌN tên AS 'Ràng buộc', is_disabled, is_not_trustedFROM sys.foreign_keys;Kết quả:
+ -------------------------------- + ------------- - + ------------------ + | Ràng buộc | is_disabled | is_not_trusted || -------------------------------- + -------------- - + ------------------ || FK_BandMember_Band | 1 | 1 || FK_BandMember_Musician | 1 | 1 || FK_MembershipPeriod_BandMember | 0 | 0 | + -------------------------------- + -------------- - + ------------------ +