Hier is wat T-SQL-code die u kunt gebruiken om een lijst te krijgen van alle beperkingen voor CHECK en externe sleutels in een SQL Server-database.
In het volgende voorbeeld doe ik een UNION
op twee databasequery's. Eén zoekt sys.foreign_keys
voor uitgeschakelde externe sleutels en de andere zoekopdrachten sys.check_constraints
voor uitgeschakelde CONTROLEER-beperkingen.
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;
Resultaat:
+----------+------------------+--------------------+------------------------+---------------+------------------+ | 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 | +----------+------------------+--------------------+------------------------+---------------+------------------+
Dit zijn de resultaten die ik krijg op een van mijn testdatabases in mijn ontwikkelomgeving. Dit retourneert alle uitgeschakelde externe sleutel- en CHECK-beperkingen in de huidige database. Om een andere database te controleren, schakelt u eenvoudig over naar die database en voert u deze daar uit.
Merk op dat wanneer u een beperking uitschakelt, de is_not_trusted
vlag is ingesteld op 1
en de beperking wordt als niet vertrouwd beschouwd. Wanneer u de beperking opnieuw inschakelt, heeft u de mogelijkheid om deze opnieuw in te stellen op vertrouwd of als niet-vertrouwd te laten. Voor meer informatie over het herstellen van vertrouwen in een beperking, zie Vertrouwen herstellen in een externe-sleutelbeperking in SQL Server en Wat u moet weten over WITH NOCHECK bij het inschakelen van een CHECK-beperking in SQL Server.