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.

  • Bruno

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

  • http://www.gtrio.com.br Sylvio

    Obrigado cara…. Foi a salvação

  • Jamensson

    Valeu! mais uma pra cachola!

  • André

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

    Valeu…

  • Wendel

    Muito Boa!!!! funciona !!!!

  • Nei

    Show… comando extremamente útil!

  • Pedro Júnior

    Muito boa essa dica!!!

  • Geovani

    Show de bola meu velho, me quebrou o maior galho. Valew !!!

  • Luiz

    Vc e o cara muito obrigado pela ajuda