sql >> データベース >  >> RDS >> Sqlserver

SQLServerデータベースのすべてのチェック制約を無効にする方法-SQLServer/TSQLチュートリアルパート87

    シナリオ:

    あなたは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データベースのすべてのチェック制約を無効にするスクリプトを生成する方法
     DisableCheckConstraint列から結果をコピーし、SSMSで実行して、必要なチェック制約を無効にします。
    ALTER TABLE [dbo].[Customer22] NOCHECK CONSTRAINT [CK__Customer2__FName__6C190EBB]
    
    ALTER TABLE [dbo].[Employee] NOCHECK CONSTRAINT [CK__Employee__FName__7A672E12]


    ビデオデモ:SQLServerのすべてのチェック制約を無効にするスクリプトを生成する方法

    1. トリガー内で例外を発生させる方法は?これを行う方法はありますか?

    2. OracleのSIN()関数

    3. 新しい行に対してのみ、デフォルトのNOW()でタイムスタンプ列を追加します

    4. Access2016でフォームコントロールのサイズを変更する方法