Aqui está um código T-SQL que você pode usar para obter uma lista de todas as restrições CHECK e de chave estrangeira em um banco de dados SQL Server.
No exemplo a seguir, faço um
UNION
em duas consultas de banco de dados. Uma consulta sys.foreign_keys
para chaves estrangeiras desabilitadas e as outras consultas sys.check_constraints
para restrições CHECK desabilitadas. SELECT SCHEMA_NAME(schema_id) AS [Schema], OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', type_desc, is_disabled, is_not_trusted FROM sys.foreign_keys WHERE is_disabled = 1 UNION SELECT SCHEMA_NAME(schema_id), OBJECT_NAME(parent_object_id), name, type_desc, is_disabled, is_not_trusted FROM sys.check_constraints WHERE is_disabled = 1;
Resultado:
+----------+------------------+--------------------+------------------------+---------------+------------------+ | Schema | Table | Constraint | type_desc | is_disabled | is_not_trusted | |----------+------------------+--------------------+------------------------+---------------+------------------| | dbo | BandMember | FK_BandMember_Band | FOREIGN_KEY_CONSTRAINT | 1 | 1 | | dbo | City | FK_City_Country | FOREIGN_KEY_CONSTRAINT | 1 | 1 | | dbo | MembershipPeriod | chkValidEndDate | CHECK_CONSTRAINT | 1 | 1 | +----------+------------------+--------------------+------------------------+---------------+------------------+
Estes são os resultados que recebo em um dos meus bancos de dados de teste em meu ambiente de desenvolvimento. Isso retorna todas as restrições de chave estrangeira e CHECK desabilitadas no banco de dados atual. Para verificar outro banco de dados, basta alternar para esse banco de dados e executá-lo lá.
Observe que quando você desabilita uma restrição, o
is_not_trusted
sinalizador está definido como 1
, e a restrição é considerada não confiável. Ao reativar a restrição, você tem a opção de redefini-la como confiável ou deixá-la como não confiável. Para obter mais informações sobre como restaurar a confiança em uma restrição, consulte Como restaurar a confiança em uma restrição de chave estrangeira no SQL Server e O que você deve saber sobre WITH NOCHECK ao habilitar uma restrição CHECK no SQL Server.