Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kembalikan Semua Batasan yang Dinonaktifkan di SQL Server (Contoh T-SQL)

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menambahkan Kolom Baru ke Tabel yang Ada di SQL Server (T-SQL)

  2. Bagaimana LEFT OUTER JOIN mengembalikan lebih banyak catatan daripada yang ada di tabel kiri?

  3. Salin tabel ke database yang berbeda pada SQL Server yang berbeda

  4. Menyimpan pesan galat SqlServer di C#

  5. Fitur Keamanan di SQL Server 2017