sql >> Databáze >  >> RDS >> Sqlserver

Vrátit všechna zakázaná omezení v SQL Server (příklad T-SQL)

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.


  1. Analytics s MariaDB AX – tThe Open Source Columnar Datastore

  2. Příklady QUARTER() – MySQL

  3. Migrace z MySQL na PostgreSQL – co byste měli vědět

  4. Získejte rozdíl v letech mezi dvěma daty v MySQL jako celé číslo