Ето малко T-SQL код, който можете да използвате, за да получите списък с всички ограничения на CHECK и външни ключове в база данни на SQL Server.
В следващия пример правя UNION
на две заявки за база данни. Една заявка sys.foreign_keys
за деактивирани външни ключове, а другите заявки sys.check_constraints
за деактивирани ограничения 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;
Резултат:
+----------+------------------+--------------------+------------------------+---------------+------------------+ | 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 | +----------+------------------+--------------------+------------------------+---------------+------------------+
Това са резултатите, които получавам в една от моите тестови бази данни в моята среда за разработка. Това връща всички деактивирани ограничения за външен ключ и ПРОВЕРКА в текущата база данни. За да проверите друга база данни, просто превключете към тази база данни и я стартирайте там.
Имайте предвид, че когато деактивирате ограничение, is_not_trusted
флагът е настроен на 1
и ограничението се счита за ненадеждно. Когато активирате отново ограничението, имате възможност да го нулирате на доверен или да го оставите като ненадеждно. За повече информация относно възстановяването на доверието в ограничение вижте Как да възстановите доверието в ограничение за външен ключ в SQL Server и Какво трябва да знаете за С NOCHECK, когато активирате ограничение CHECK в SQL Server.