Scénář:
Pracujete jako vývojář SQL Serveru, musíte připravit skripty pro povolení všech omezení cizího klíče v databázi, které jsou zakázány. To se může stát, možná někdo zakázal omezení cizího klíče pro zatížení dat, kde se nestará o narušení referenční integrity, a zapomněl je povolit později.
Řešení:
Nejprve získáme seznam omezení cizího klíče se stavem pomocí níže uvedeného dotazu
--Get List of Foreign Key Constraints if Enabled or Disabled
USE YourDatabaseName
GO
Select
Schema_name(Schema_id) as SchemaName,
object_name(Parent_object_id) as TableName,
name as ForeignKeyConstraintName,
Case When Is_disabled=1 Then 'No'
ELSE 'Yes' End as IsEnabled
from sys.foreign_keys
|
Jak zkontrolovat, zda je omezení cizího klíče v databázi SQL Server zakázáno nebo povoleno |
Nyní vygenerujme skripty pro povolení omezení cizího klíče, která jsou zakázána v databázi SQL Server pomocí níže uvedeného dotazu.
USE YourdatabaseName
go
-- Enable Foreign Key Constraints Script
SELECT distinct 'ALTER TABLE '
+ '['+ Schema_name(FK.schema_id)
+ '].['+ OBJECT_NAME(FK.parent_object_id)
+ ']'+ ' CHECK CONSTRAINT '
+ '[' + FK.name + ']' AS EnableConstraintQuery
FROM sys.foreign_keys AS FK
where is_disabled=1
|
Jak vygenerovat skript pro povolení všech omezení cizího klíče v databázi SQL Server |
Zkopírujte výsledky a spusťte je v SSMS, abyste povolili deaktivovaná omezení cizích klíčů v databázi SQL Server.
Video ukázka:Jak vygenerovat skript pro povolení všech omezení cizích klíčů v SQL Server