## Kedy použiť Po importe dát, migrácii schémy alebo po použití `WITH NOCHECK`. ## Ako čítať výsledok `is_not_trusted = 1` znamená, že optimalizátor sa na constraint nemôže spoľahnúť (napr. pri join elimination). `is_disabled = 1` = constraint sa vôbec nekontroluje. > [!WARNING] > Oprava `ALTER TABLE … WITH CHECK CHECK CONSTRAINT …` prečíta celú tabuľku, drží zámky a zlyhá na nekonzistentných dátach – nie je súčasťou skriptu, plánuj ju ako zmenu. **Oprávnenia:** Viditeľnosť metadát tabuliek a constraints. Spúšťa sa v cieľovej databáze. **Režim:** READ ONLY · **Verzia:** SQL Server 2016 – 2022
Skript
Nedôveryhodné a vypnuté constraints
FOREIGN KEY a CHECK constraints, ktoré sú vypnuté alebo „not trusted“ – typicky po importe s WITH NOCHECK.
Parametre skriptu doplň a kopíruj hotový skript
/* DeadlockCafe | Nedôveryhodné a vypnuté constraints
Účel: FOREIGN KEY a CHECK constraints, ktoré sú vypnuté alebo „not trusted“ – typicky po importe s WITH NOCHECK.
Režim: READ ONLY | SQL Server 2016 – 2022, on-premises
*/
SET NOCOUNT ON;
SELECT SCHEMA_NAME(t.schema_id) AS schema_name, t.name AS table_name,
fk.name AS constraint_name, 'FOREIGN KEY' AS constraint_type,
fk.is_disabled, fk.is_not_trusted
FROM sys.foreign_keys AS fk
JOIN sys.tables AS t ON t.object_id=fk.parent_object_id
WHERE fk.is_disabled=1 OR fk.is_not_trusted=1
UNION ALL
SELECT SCHEMA_NAME(t.schema_id), t.name,
ck.name, 'CHECK', ck.is_disabled, ck.is_not_trusted
FROM sys.check_constraints AS ck
JOIN sys.tables AS t ON t.object_id=ck.parent_object_id
WHERE ck.is_disabled=1 OR ck.is_not_trusted=1
ORDER BY schema_name,table_name,constraint_name;