Oto kod T-SQL, którego możesz użyć, aby uzyskać listę wszystkich ograniczeń CHECK i kluczy obcych w bazie danych SQL Server.
W poniższym przykładzie robię UNION
na dwóch zapytaniach do bazy danych. Jeden pyta sys.foreign_keys
dla wyłączonych kluczy obcych i innych zapytań sys.check_constraints
dla niepełnosprawnych ograniczeń CHECK.
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;
Wynik:
+----------+------------------+--------------------+------------------------+---------------+------------------+ | 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 | +----------+------------------+--------------------+------------------------+---------------+------------------+
Oto wyniki, które otrzymuję w jednej z moich testowych baz danych w moim środowisku programistycznym. Zwraca to wszystkie wyłączone ograniczenia klucza obcego i CHECK w bieżącej bazie danych. Aby sprawdzić inną bazę danych, po prostu przełącz się na tę bazę i tam ją uruchom.
Zwróć uwagę, że kiedy wyłączysz ograniczenie, is_not_trusted
flaga jest ustawiona na 1
, a ograniczenie jest uważane za niezaufane. Po ponownym włączeniu ograniczenia masz możliwość zresetowania go do zaufanego lub pozostawienia jako niezaufanego. Aby uzyskać więcej informacji na temat przywracania zaufania w ograniczeniu, zobacz Jak przywrócić zaufanie w ograniczeniu klucza obcego w SQL Server i Co należy wiedzieć o funkcji NOCHECK podczas włączania ograniczenia CHECK w SQL Server.