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.