Berikut beberapa kode T-SQL yang dapat Anda gunakan untuk mendapatkan daftar semua CHECK dan batasan kunci asing dalam database SQL Server.
Dalam contoh berikut, saya melakukan UNION
pada dua query database. Satu kueri sys.foreign_keys
untuk kunci asing yang dinonaktifkan, dan kueri lainnya sys.check_constraints
untuk batasan CHECK yang dinonaktifkan.
SELECT SCHEMA_NAME(schema_id) AS [Schema], OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', type_desc, is_disabled, is_not_trusted FROM sys.foreign_keys WHERE is_disabled = 1 UNION SELECT SCHEMA_NAME(schema_id), OBJECT_NAME(parent_object_id), name, type_desc, is_disabled, is_not_trusted FROM sys.check_constraints WHERE is_disabled = 1;
Hasil:
+----------+------------------+--------------------+------------------------+---------------+------------------+ | Schema | Table | Constraint | type_desc | is_disabled | is_not_trusted | |----------+------------------+--------------------+------------------------+---------------+------------------| | dbo | BandMember | FK_BandMember_Band | FOREIGN_KEY_CONSTRAINT | 1 | 1 | | dbo | City | FK_City_Country | FOREIGN_KEY_CONSTRAINT | 1 | 1 | | dbo | MembershipPeriod | chkValidEndDate | CHECK_CONSTRAINT | 1 | 1 | +----------+------------------+--------------------+------------------------+---------------+------------------+
Ini adalah hasil yang saya dapatkan di salah satu database pengujian saya di lingkungan pengembangan saya. Ini mengembalikan semua kunci asing yang dinonaktifkan dan batasan PERIKSA dalam database saat ini. Untuk memeriksa database lain, cukup beralih ke database itu dan jalankan di sana.
Perhatikan bahwa saat Anda menonaktifkan batasan, is_not_trusted
bendera disetel ke 1
, dan batasannya dianggap tidak tepercaya. Saat Anda mengaktifkan kembali batasan, Anda memiliki opsi untuk menyetel ulang menjadi tepercaya atau membiarkannya tidak tepercaya. Untuk informasi selengkapnya tentang memulihkan kepercayaan dalam batasan, lihat Cara Memulihkan Kepercayaan dalam Batasan Kunci Asing di SQL Server dan Apa yang Harus Anda Ketahui tentang DENGAN NOCHECK saat Mengaktifkan Batasan PERIKSA di SQL Server.