シナリオ:
あなたはSQLServer開発者として働いています。データベースで無効になっているすべての外部キー制約を有効にするスクリプトを準備する必要があります。これが発生する可能性があります。参照整合性の違反を気にせず、後で有効にするのを忘れた場合に、誰かがデータロードの外部キー制約を無効にした可能性があります。
解決策:
まず、以下のクエリを使用して、ステータス付きの外部キー制約のリストを取得しましょう。
--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
|
SQLServerデータベースで外部キー制約が無効または有効になっているかどうかを確認する方法 |
次に、以下のクエリを使用して、SQLServerデータベースで無効になっている外部キー制約を有効にするスクリプトを生成しましょう。
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
のFK
|
SQLServerデータベースですべての外部キー制約を有効にするスクリプトを生成する方法 |
結果をコピーしてSSMSで実行し、SQLServerデータベースで無効になっている外部キー制約を有効にします。
ビデオデモ:SQLServerですべての外部キー制約を有効にするスクリプトを生成する方法