[ { // Example of a database-scoped rule: the query runs in every online user database, and the column // "database" is added to each row automatically. "id": "COM-DB-001", "title": "Fremmednøgler, som SQL Server ikke stoler på", "severity": "Low", "scope": "Database", "query": "SELECT OBJECT_SCHEMA_NAME(parent_object_id) + '.' + OBJECT_NAME(parent_object_id) AS [table], name AS [constraint] FROM sys.foreign_keys WHERE is_not_trusted = 1 AND is_disabled = 0", "subject": "constraint: {database}/{constraint}", "findingTitle": "{database}: fremmednøglen {constraint} på {table} er ikke betroet", "explanation": "Nøglen er blevet slået til igen uden WITH CHECK, fx efter en dataindlæsning. Den håndhæves for nye rækker, men SQL Server kan ikke stole på eksisterende data, så optimizeren udnytter den ikke til at fjerne joins, og der kan ligge ugyldige data.", "recommendation": "Kontrollér og betro nøglen: ALTER TABLE {table} WITH CHECK CHECK CONSTRAINT [{constraint}]; Fejler det, findes der rækker, som bryder nøglen, og de skal rettes først. Kør det uden for spidsbelastning på store tabeller.", "references": [ { "title": "ALTER TABLE ... WITH CHECK", "url": "https://learn.microsoft.com/sql/t-sql/statements/alter-table-transact-sql" } ], "author": "SQLInsight Pro" } ]