Você pode usar o código abaixo para desativar todos os
CHECK
e restrições de chave estrangeira para uma tabela específica no SQL Server. Basta substituir
TableName
com o nome da tabela aplicável. ALTER TABLE TableName NOCHECK CONSTRAINT ALL
Abaixo está um exemplo onde eu faço isso e depois verifico o resultado.
Exemplo 1 – Revise as restrições
Primeiro, darei uma olhada rápida no
CHECK
atual e restrições de chave estrangeira no banco de dados, para ver se estão ou não habilitadas ou desabilitadas. SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trusted FROM sys.foreign_keys UNION SELECT OBJECT_NAME(parent_object_id), name, is_disabled, is_not_trusted FROM sys.check_constraints;
Resultado:
+----------------+-----------------+---------------+------------------+ | Table | Constraint | is_disabled | is_not_trusted | |----------------+-----------------+---------------+------------------| | ConstraintTest | chkPrice | 0 | 0 | | ConstraintTest | chkValidEndDate | 0 | 0 | | ConstraintTest | chkTeamSize | 0 | 0 | | Occupation | chkJobTitle | 0 | 0 | +----------------+-----------------+---------------+------------------+
Portanto, existem atualmente quatro
CHECK
restrições no banco de dados, três das quais são para o ConstraintTest
tabela. Podemos ver que todas as restrições estão habilitadas porque is_disabled está definido como 0 .
Exemplo 2 – Desabilitar as Restrições
Agora vou desabilitar todas as restrições para o
ConstraintTest
tabela:ALTER TABLE ConstraintTest NOCHECK CONSTRAINT ALL;
Exemplo 3 – Verifique o resultado
Agora eu executo a mesma consulta do primeiro exemplo para ver o resultado.
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trusted FROM sys.foreign_keys UNION SELECT OBJECT_NAME(parent_object_id), name, is_disabled, is_not_trusted FROM sys.check_constraints;
Resultado:
+----------------+-----------------+---------------+------------------+ | Table | Constraint | is_disabled | is_not_trusted | |----------------+-----------------+---------------+------------------| | ConstraintTest | chkPrice | 1 | 1 | | ConstraintTest | chkValidEndDate | 1 | 1 | | ConstraintTest | chkTeamSize | 1 | 1 | | Occupation | chkJobTitle | 0 | 0 | +----------------+-----------------+---------------+------------------+
Como esperado, todas as três restrições para o ConstraintTest tabela foi desabilitada (porque o is_disabled coluna está definida como 1 para essas restrições).
Observe que o is_not_trusted coluna também está definida como 1 . Essa é uma consideração importante, especialmente se você pretende reativar qualquer uma de suas restrições desativadas.
Consulte O que você deve saber sobre WITH NOCHECK ao habilitar uma restrição CHECK no SQL Server para obter informações sobre como restaurar a confiança ao reativar suas restrições. As informações nesse artigo também se aplicam a chaves estrangeiras.
Desabilitar as restrições individualmente
Se você não quiser desabilitar todas as restrições na tabela, poderá desabilitá-las individualmente. Consulte Como desabilitar uma restrição CHECK no SQL Server e Como desabilitar uma chave estrangeira no SQL Server.
Reative as restrições
Se você precisar reativar todas as restrições de uma tabela, consulte Como habilitar todas as restrições de verificação e chave estrangeira para uma tabela.
Se você precisar reativá-los individualmente, consulte Como habilitar uma restrição CHECK no SQL Server e Como habilitar uma chave estrangeira no SQL Server.