Zde je nějaký kód T-SQL, který můžete použít k získání seznamu všech omezení CHECK a cizích klíčů v databázi SQL Server.
V následujícím příkladu udělám UNION
na dva databázové dotazy. Jeden se dotazuje sys.foreign_keys
pro zakázané cizí klíče a další dotazy sys.check_constraints
pro deaktivovaná omezení CHECK.
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;
Výsledek:
+----------+------------------+--------------------+------------------------+---------------+------------------+ | 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 | +----------+------------------+--------------------+------------------------+---------------+------------------+
Toto jsou výsledky, které získám na jedné z mých testovacích databází v mém vývojovém prostředí. To vrátí všechny zakázané cizí klíče a omezení CHECK v aktuální databázi. Chcete-li zkontrolovat jinou databázi, jednoduše se přepněte do této databáze a spusťte ji tam.
Všimněte si, že když zakážete omezení, is_not_trusted
příznak je nastaven na 1
a omezení je považováno za nedůvěryhodné. Když omezení znovu povolíte, máte možnost ho resetovat na důvěryhodné nebo jej ponechat jako nedůvěryhodné. Další informace o obnovení důvěry v omezení naleznete v části Jak obnovit důvěru v omezení cizího klíče v SQL Server a Co byste měli vědět o WITH NOCHECK, když povolujete omezení CHECK v SQL Server.