Se você precisar retornar uma lista de todos os
CHECK
restrições que foram desabilitadas em um banco de dados SQL Server, você pode executar o código T-SQL abaixo. Exemplo 1 - Restrições de VERIFICAÇÃO desativadas apenas para retorno
Esta consulta retorna apenas o
CHECK
desabilitado restrições no banco de dados atual. Ele retorna o nome da restrição, o nome da tabela à qual é aplicada e a definição da restrição. SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', definition FROM sys.check_constraints WHERE is_disabled = 1;
Resultado:
+----------------+-----------------+-------------------------------+ | Table | Constraint | definition | |----------------+-----------------+-------------------------------| | ConstraintTest | chkValidEndDate | ([EndDate]>=[StartDate]) | | Occupation | chkJobTitle | ([JobTitle]<>'Digital Nomad') | +----------------+-----------------+-------------------------------+
Isso consulta as
sys.check_constraints
visão do sistema. Sabemos que ele só retorna restrições desabilitadas porque o WHERE
cláusula especifica apenas linhas que têm o is_disabled
coluna definida como 1
. Se você deseja retornar todos os habilitados
CHECK
restrições, basta alterar o 1
para 0
. Exemplo 2 – Retornar todas as restrições CHECK
A consulta a seguir retorna todos
CHECK
restrições para o banco de dados atual (não apenas os desabilitados). Desta vez eu retorno o is_disabled
coluna para demonstrar de onde a consulta anterior obteve seu valor:SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trusted FROM sys.check_constraints;
Resultado:
+----------------+-----------------+---------------+------------------+ | Table | Constraint | is_disabled | is_not_trusted | |----------------+-----------------+---------------+------------------| | ConstraintTest | chkPrice | 0 | 0 | | ConstraintTest | chkValidEndDate | 1 | 1 | | ConstraintTest | chkTeamSize | 0 | 0 | | Occupation | chkJobTitle | 1 | 1 | +----------------+-----------------+---------------+------------------+
Também incluí o
is_not_trusted
coluna nesta consulta. É prudente estar atento a esse valor, porque uma restrição pode permanecer não confiável mesmo depois de ser reativada. Para obter uma discussão detalhada (e exemplos) desse sinalizador, consulte O que você deve saber sobre WITH NOCHECK ao habilitar uma restrição CHECK no SQL Server.