There are two scenarios in SQL Server that can leave tables with rows that are not bound by an existing FOREIGN KEY constraint or CHECK constraint:
- Newly added constraints ignore existing table data if created using “WITH NOCHECK”.
- Re-enabled constraints ignore all table updates and inserts that took place since the constraint was disabled.
Use DBCC CHECKCONSTRAINS to check the integrity of your FOREIGN KEY constraints and CHECK constraints and make sure there are no constraint violations. The command returns a list of rows containing all violations. DBCC CHECKCONSTRAINTS does not return any rows if there are no constraint violations.
To check all constraints in the current database:
To check all constraints on a single table:
DBCC CHECKCONSTRAINTS (‘table1′)
DBCC CHECKCONSTRAINTS checks against enabled constraints only unless WITH ALL_CONSTRAINTS is specified. The returned result consists of table name, constraint name and a WHERE clause that identifies the violating row in the table.