<p>Si vous souhaitez désactiver toutes les contraintes dans la base de données, exécutez simplement ce code :</p>
<pre><code class="lang-auto">-- disable all constraints
EXEC sp_MSforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
</code></pre>
<p>Pour les réactiver, exécutez : (le print est optionnel bien sûr et ne fait que lister les tables)</p>
<pre><code class="lang-auto">-- enable all constraints
exec sp_MSforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
</code></pre>
<p>Je trouve cela utile lors du peuplement de données d’une base de données à une autre. C’est une bien meilleure approche que de supprimer les contraintes. Comme vous l’avez mentionné, c’est pratique lors de la suppression de toutes les données dans la base de données et de leur rechargement (par exemple dans un environnement de test).</p>
<p>Si vous supprimez toutes les données, vous pourriez trouver <a href="https://stackoverflow.com/questions/155246/how-do-you-truncate-all-tables-in-a-database-using-tsql#156813">cette solution</a> utile.</p>
<p>Il est aussi parfois pratique de désactiver tous les déclencheurs également, vous pouvez voir la solution complète <a href="https://stackoverflow.com/questions/123558/sql-server-2005-t-sql-to-temporarily-disable-a-trigger#123966">ici</a>.</p>