sql >> Database teknologi >  >> RDS >> Sqlserver

Returner alle deaktiverede begrænsninger i SQL Server (T-SQL-eksempel)

Her er noget T-SQL-kode, du kan bruge til at få en liste over alle CHECK- og fremmednøglebegrænsninger i en SQL Server-database.

I det følgende eksempel laver jeg en UNION på to databaseforespørgsler. One forespørger sys.foreign_keys for deaktiverede fremmednøgler og de andre forespørgsler sys.check_constraints for deaktiverede CHECK-begrænsninger.

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;

Resultat:

+----------+------------------+--------------------+------------------------+---------------+------------------+
| 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                |
+----------+------------------+--------------------+------------------------+---------------+------------------+

Det er de resultater, jeg får på en af ​​mine testdatabaser i mit udviklingsmiljø. Dette returnerer alle deaktiverede fremmednøgler og CHECK-begrænsninger i den aktuelle database. For at kontrollere en anden database skal du blot skifte til den database og køre den der.

Bemærk, at når du deaktiverer en begrænsning, is_not_trusted flag er sat til 1 , og begrænsningen betragtes som upålidelig. Når du genaktiverer begrænsningen, har du mulighed for at nulstille den til betroet eller lade den være upålidelig. For mere information om gendannelse af tillid i en begrænsning, se Sådan gendannes tillid i en fremmednøglebegrænsning i SQL Server og hvad du bør vide om MED NOCHECK, når du aktiverer en CHECK-begrænsning i SQL Server.


  1. En oversigt over forskellige hjælpeplanknuder i PostgreSQL

  2. Bedste måde at få PK Guide af indsat række

  3. Fjern pivot med kolonnenavn

  4. Flytning af en MariaDB-database til krypterede og ukrypterede stater