Om du vill inaktivera alla begränsningar i databasen, kör bara den här koden:
-- disable all constraints
EXEC sp_MSforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
För att slå på dem igen, kör:(utskriften är naturligtvis valfri och den listar bara tabellerna)
-- enable all constraints
exec sp_MSforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
Jag tycker att det är användbart när jag fyller i data från en databas till en annan. Det är mycket bättre tillvägagångssätt än att släppa begränsningar. Som du nämnde är det praktiskt när man släpper all data i databasen och fyller på den igen (säg i testmiljö).
Om du tar bort all data kanske du tycker att den här lösningen är till hjälp.
Ibland är det också praktiskt att inaktivera alla triggers också, du kan se hela lösningen här.