Jika Anda perlu mengembalikan daftar semua batasan kunci asing yang telah dinonaktifkan di database SQL Server, Anda dapat menjalankan kode T-SQL di bawah ini.
Contoh 1 – Hanya Kembalikan Batasan Kunci Asing yang Dinonaktifkan
Kueri ini hanya mengembalikan batasan kunci asing yang dinonaktifkan di database saat ini. Untuk contoh ini, saya hanya mengembalikan nama kendala, beserta statusnya yang dinonaktifkan dan tepercaya.
SELECT name AS 'Constraint', is_disabled, is_not_trusted FROM sys.foreign_keys WHERE is_disabled = 1;
Hasil:
+------------------------+---------------+------------------+ | Constraint | is_disabled | is_not_trusted | |------------------------+---------------+------------------| | FK_BandMember_Band | 1 | 1 | | FK_BandMember_Musician | 1 | 1 | +------------------------+---------------+------------------+
Ini menanyakan sys.foreign_keys
tampilan sistem. Kami tahu ini hanya mengembalikan batasan yang dinonaktifkan karena WHERE
klausa hanya menentukan baris yang memiliki is_disabled
kolom disetel ke 1
.
Jika Anda ingin mengembalikan hanya diaktifkan batasan kunci asing, cukup ubah 1
ke 0
.
Perhatikan bahwa is_not_trusted
bendera juga disetel ke 1
untuk kendala yang dinonaktifkan ini. Itu karena sistem tidak dapat menjamin bahwa kendala telah memeriksa semua data. Ini masuk akal, karena menonaktifkan batasan membuka potensi data yang tidak valid untuk masuk ke database tanpa diperiksa.
Ini query yang sama lagi, tapi kali ini saya menyertakan tabel dan tabel referensi untuk setiap kendala:
SELECT name AS 'Constraint', OBJECT_NAME(parent_object_id) AS 'Table', OBJECT_NAME(referenced_object_id) AS 'Referenced Table', is_disabled, is_not_trusted FROM sys.foreign_keys WHERE is_disabled = 1;
Hasil:
+------------------------+------------+--------------------+---------------+------------------+ | Constraint | Table | Referenced Table | is_disabled | is_not_trusted | |------------------------+------------+--------------------+---------------+------------------| | FK_BandMember_Band | BandMember | Band | 1 | 1 | | FK_BandMember_Musician | BandMember | Musician | 1 | 1 | +------------------------+------------+--------------------+---------------+------------------+
Contoh 2 – Mengembalikan Semua Batasan Kunci Asing
Kueri berikut mengembalikan semua batasan kunci asing untuk database saat ini (bukan hanya yang dinonaktifkan):
SELECT name AS 'Constraint', is_disabled, is_not_trusted FROM sys.foreign_keys;
Hasil:
+--------------------------------+---------------+------------------+ | Constraint | is_disabled | is_not_trusted | |--------------------------------+---------------+------------------| | FK_BandMember_Band | 1 | 1 | | FK_BandMember_Musician | 1 | 1 | | FK_MembershipPeriod_BandMember | 0 | 0 | +--------------------------------+---------------+------------------+