Pokud potřebujete vrátit seznam všech CHECK omezení, která byla zakázána v databázi SQL Server, můžete spustit kód T-SQL níže.
Příklad 1 – Vrátit pouze deaktivovaná omezení CHECK
Tento dotaz vrací pouze zakázaný CHECK omezení v aktuální databázi. Vrátí název omezení, název tabulky, na kterou se vztahuje, a definici omezení.
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', definition FROM sys.check_constraints WHERE is_disabled = 1;
Výsledek:
+----------------+-----------------+-------------------------------+ | Table | Constraint | definition | |----------------+-----------------+-------------------------------| | ConstraintTest | chkValidEndDate | ([EndDate]>=[StartDate]) | | Occupation | chkJobTitle | ([JobTitle]<>'Digital Nomad') | +----------------+-----------------+-------------------------------+
Tím se dotazuje sys.check_constraints systémový pohled. Víme, že vrací pouze deaktivovaná omezení, protože WHERE klauzule specifikuje pouze řádky, které mají is_disabled sloupec nastaven na 1 .
Pokud chcete vrátit všechny povolené CHECK omezení, jednoduše změňte 1 na 0 .
Příklad 2 – Vrátit všechna omezení CHECK
Následující dotaz vrátí vše CHECK omezení pro aktuální databázi (nejen ta zakázaná). Tentokrát vracím is_disabled za účelem demonstrovat, odkud předchozí dotaz získal svou hodnotu:
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trusted FROM sys.check_constraints;
Výsledek:
+----------------+-----------------+---------------+------------------+ | Table | Constraint | is_disabled | is_not_trusted | |----------------+-----------------+---------------+------------------| | ConstraintTest | chkPrice | 0 | 0 | | ConstraintTest | chkValidEndDate | 1 | 1 | | ConstraintTest | chkTeamSize | 0 | 0 | | Occupation | chkJobTitle | 1 | 1 | +----------------+-----------------+---------------+------------------+
Zahrnul jsem také is_not_trusted sloupec v tomto dotazu. Je rozumné mít na paměti tuto hodnotu, protože omezení může zůstat nedůvěryhodné i poté, co bylo znovu aktivováno. Podrobnou diskuzi (a příklady) tohoto příznaku naleznete v části Co byste měli vědět o WITH NOCHECK při povolování omezení CHECK v SQL Server.