Ако трябва да върнете списък с всички ограничения за външни ключове, които са били деактивирани в база данни на SQL Server, можете да изпълните T-SQL кода по-долу.
Пример 1 – Върнете само деактивирани ограничения на външния ключ
Тази заявка връща само деактивираните ограничения за външен ключ в текущата база данни. За този пример връщам само името на ограничението, заедно с неговото деактивирано и доверено състояние.
ИЗБЕРЕТЕ име КАТО 'Ограничение', is_disabled, is_not_trustedFROM sys.foreign_keysWHERE is_disabled =1;
Резултат:
+-----------------------+--------------+----- ------------+| Ограничение | е_забранено | е_не_доверен ||-----------------------+--------------+------ ------------|| FK_BandMember_Band | 1 | 1 || FK_BandMember_Musician | 1 | 1 |+-----------------------+--------------+------ ------------+
Това прави заявка за sys.foreign_keys
системен изглед. Знаем, че връща само деактивирани ограничения, защото WHERE
клаузата посочва само редове, които имат is_disabled
колона, зададена на 1
.
Ако искате да върнете само разрешено ограничения на външния ключ, просто променете 1
до 0
.
Обърнете внимание, че is_not_trusted
флагът също е настроен на 1
за тези деактивирани ограничения. Това е така, защото системата не може да гарантира, че ограничението е проверило всички данни. Това има смисъл, тъй като деактивирането на ограничение отваря потенциала невалидни данни да влязат в базата данни, без да бъдат проверени.
Ето отново същата заявка, но този път включвам таблицата и посочената таблица за всяко ограничение:
ИЗБЕРЕТЕ име КАТО 'Ограничение', OBJECT_NAME(parent_object_id) КАТО 'Таблица', OBJECT_NAME(referenced_object_id) КАТО 'Реферирана таблица', is_disabled, is_not_trustedFROM sys.foreign_keysWHERE is_disabled> =1;Резултат:
+-----------------------+-----------+-------- ------------+--------------+--------------+| Ограничение | Таблица | Реферирана таблица | е_забранено | е_не_доверен ||-----------------------+-----------+--------- -----------+--------------+--------------|| FK_BandMember_Band | Член на групата | Банда | 1 | 1 || FK_BandMember_Musician | Член на групата | Музикант | 1 | 1 |+-----------------------+------------+-------- -----------+--------------+--------------+Пример 2 – Връщане на всички ограничения на външния ключ
Следната заявка връща всички ограничения на външния ключ за текущата база данни (не само за деактивираните):
ИЗБЕРЕТЕ име КАТО 'Ограничение', is_disabled, is_not_trustedFROM sys.foreign_keys;Резултат:
+--------------------------------+------------ --+----------------+| Ограничение | е_забранено | е_не_доверен ||--------------------------------+-------------- -+------------------|| FK_BandMember_Band | 1 | 1 || FK_BandMember_Musician | 1 | 1 || FK_Период на членство_Член на групата | 0 | 0 |+--------------------------------+-------------- -+------------------+