sql >> Databasteknik >  >> RDS >> Sqlserver

Returnera alla inaktiverade begränsningar i SQL Server (T-SQL-exempel)

Här är lite T-SQL-kod som du kan använda för att få en lista över alla CHECK- och främmande nyckelbegränsningar i en SQL Server-databas.

I följande exempel gör jag en UNION på två databasfrågor. One frågar sys.foreign_keys för inaktiverade främmande nycklar och de andra frågorna sys.check_constraints för inaktiverade CHECK-begränsningar.

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 här är resultaten jag får på en av mina testdatabaser i min utvecklingsmiljö. Detta returnerar alla inaktiverade främmande nyckel och CHECK-begränsningar i den aktuella databasen. För att kontrollera en annan databas byter du helt enkelt till den databasen och kör den där.

Observera att när du inaktiverar en begränsning är is_not_trusted flaggan är inställd på 1 , och begränsningen anses vara otillförlitlig. När du återaktiverar begränsningen har du möjlighet att återställa den till betrodd eller lämna den som opålitlig. För mer information om att återställa förtroende i en begränsning, se Hur man återställer förtroende i en främmande nyckelbegränsning i SQL Server och vad du bör veta om MED NOCHECK när du aktiverar en CHECK-begränsning i SQL Server.


  1. Hur Mod() fungerar i PostgreSQL

  2. onCreate() av ​​RoomDatabase.Callback() anropades inte efter ett lyckat anrop till .build()

  3. mysql -> infoga i tbl (välj från en annan tabell) och några standardvärden

  4. Hur man hittar alla begränsningsöverträdelser i en SQL Server-databas