Como desabilitar rapidamente constraints e triggers de um banco SQL Server

Quando se está importando dados para um banco, as constraints e triggers podem ser um chato obstáculo. Em alguns casos poder ser muito mais fácil desabilitar tudo e reativar no final do processo. Pesquisando sobre isso, encontrei essa ótima dica no StackOverflow.

Para desabilitar todas as constraints e triggers de todas as tabelas do banco:

exec sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT ALL"
exec sp_msforeachtable "ALTER TABLE ? DISABLE TRIGGER ALL"

Para habilitar:

exec sp_msforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT ALL"
exec sp_msforeachtable "ALTER TABLE ? ENABLE TRIGGER ALL"

Alias, essa sp_msforeachtable é muito interessante e pode ser explorada de muitas formas diferentes. Testei no SQL Server 2008, mas deve funcionar no 2005 pelo menos.

Um detalhe a ser observado é que esse comando não desabilita constraint de PK nem UNIQUE.

7 Comments

  • Bruno
    23/6/2009 - 10:36 | Permalink

    Muito boa essa dica ..
    é exatamente o que eu estava procurando na net ..
    Vlw !!!

  • 22/11/2009 - 12:35 | Permalink

    Obrigado cara…. Foi a salvação

  • Jamensson
    6/12/2009 - 01:19 | Permalink

    Valeu! mais uma pra cachola!

  • André
    10/6/2010 - 17:09 | Permalink

    Muito boa a dica !!!
    Testei no SqlServer 2000 e foi de boa.

    Valeu…

  • Wendel
    20/7/2010 - 12:29 | Permalink

    Muito Boa!!!! funciona !!!!

  • Nei
    3/11/2010 - 11:58 | Permalink

    Show… comando extremamente útil!

  • Pedro Júnior
    1/9/2011 - 12:45 | Permalink

    Muito boa essa dica!!!

  • Leave a Reply

    Your email address will not be published. Required fields are marked *

    *

    You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>