シナリオ:
あなたはSQLServer/ETL開発者として働いています。 SQLServerデータベースのテーブルに大量のデータをロードする必要があります。チェック制約は異なるテーブルに作成されます。ロードしようとしているデータは、チェック制約に従って修飾されない可能性があります。ビジネスでは、データがチェック制約の対象ではない場合でも、とにかくデータをロードする必要があります。 SQL Serverデータベースのすべての制約を一時的に無効にしてから、データをロードしてから、チェック制約を再度有効にします。
解決策:
以下のスクリプトを使用して、データベースで有効になっているすべてのチェック制約のチェック制約を無効にするスクリプトを生成できます。すべてのテーブルのスクリプトを生成したくない場合は、where句でテーブルをさらにフィルタリングできます。--Generate Script to Disable All Check Constraint in SQL Server Database Select DB_Name() AS DBName, Schema_Name(Schema_id) AS TableSchema, Object_name(parent_object_id) as TableName, definition, 'Alter Table [' + Schema_Name(Schema_id) + '].[' + Object_name(parent_object_id) + ']' + ' NOCHECK CONSTRAINT ' + '[' + NAME + ']' AS DisableCheckConstraint From sys.check_constraints where is_disabled=0
SQLServerデータベースのすべてのチェック制約を無効にするスクリプトを生成する方法 |
ALTER TABLE [dbo].[Customer22] NOCHECK CONSTRAINT [CK__Customer2__FName__6C190EBB] ALTER TABLE [dbo].[Employee] NOCHECK CONSTRAINT [CK__Employee__FName__7A672E12]
ビデオデモ:SQLServerのすべてのチェック制約を無効にするスクリプトを生成する方法