Можете да използвате кода по-долу, за да деактивирате всички CHECK
и ограничения на външния ключ за конкретна таблица в SQL Server.
Просто заменете TableName
с името на приложимата таблица.
ALTER TABLE TableName NOCHECK ОГРАНИЧЕНИЕ ВСИЧКИ
По-долу е даден пример, където правя това и след това проверявам резултата.
Пример 1 – Преглед на ограниченията
Първо, ще разгледам набързо текущата CHECK
и ограничения на външния ключ в базата данни, за да видите дали са активирани или деактивирани.
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trustedFROM sys.foreign_keysUNIONSELECT OBJECT_NAME(parent_object_id), name, is_disabled, is_not_trustedFROM> s_not_trustedFROM>Резултат:
+----------------+----------------+----------- ----+-----------------+| Таблица | Ограничение | е_забранено | е_не_доверен ||----------------+----------------+------------ ---+------------------|| ConstraintTest | chkPrice | 0 | 0 || ConstraintTest | chkValidEndDate | 0 | 0 || ConstraintTest | chkTeamSize | 0 | 0 || Професия | chkJobTitle | 0 | 0 |+----------------+----------------+----------- ---+------------------+Така че в момента има четири
CHECK
ограничения в базата данни, три от които са заConstraintTest
таблица.Можем да видим, че всички ограничения са активирани, защото is_disabled е настроен на 0 .
Пример 2 – Деактивиране на ограниченията
Сега ще деактивирам всички ограничения за
ConstraintTest
таблица:ПРОМЕНЯ ТАБЛИЦА ОграничениеТест NOCHECK ОГРАНИЧЕНИЕ ВСИЧКИ;Пример 3 – Проверете резултата
Сега изпълнявам същата заявка от първия пример, за да видя резултата.
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trustedFROM sys.foreign_keysUNIONSELECT OBJECT_NAME(parent_object_id), name, is_disabled, is_not_trustedFROM> s_not_trustedFROM>Резултат:
+----------------+----------------+----------- ----+-----------------+| Таблица | Ограничение | е_забранено | е_не_доверен ||----------------+----------------+------------ ---+------------------|| ConstraintTest | chkPrice | 1 | 1 || ConstraintTest | chkValidEndDate | 1 | 1 || ConstraintTest | chkTeamSize | 1 | 1 || Професия | chkJobTitle | 0 | 0 |+----------------+----------------+----------- ---+------------------+Както се очакваше, и трите ограничения за ConstraintTest таблицата са деактивирани (защото is_disabled колоната е настроена на 1 за тези ограничения).
Забележете, че не_доверен колоната също е настроена на 1 . Това е важно съображение, особено ако възнамерявате да активирате отново някое от вашите деактивирани ограничения.
Вижте какво трябва да знаете за WITH NOCHECK, когато активирате ограничение CHECK в SQL Server за информация как да възстановите доверието при повторно активиране на вашите ограничения. Информацията в тази статия се отнася и за външни ключове.
Деактивирайте ограниченията поотделно
Ако не искате да деактивирате всички ограничения в таблицата, можете да ги деактивирате поотделно. Вижте как да деактивирате ограничение CHECK в SQL Server и как да деактивирате външен ключ в SQL Server.
Активирайте отново ограниченията
Ако трябва да активирате отново всички ограничения за таблица, вижте Как да активирате ВСИЧКИ ПРОВЕРКИ и ограничения на външния ключ за таблица.
Ако трябва да ги активирате отново поотделно, вижте Как да активирате ограничение CHECK в SQL Server и и Как да активирате външен ключ в SQL Server.