Home > SQL Server > Como desabilitar rapidamente constraints e triggers de um banco SQL Server

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.

Categories: SQL Server Tags:
  1. Bruno
    June 23rd, 2009 at 10:36 | #1

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

  2. November 22nd, 2009 at 12:35 | #2

    Obrigado cara…. Foi a salvação

  3. Jamensson
    December 6th, 2009 at 01:19 | #3

    Valeu! mais uma pra cachola!

  1. No trackbacks yet.