レプリケーションの CHECK 制約の無効化

SQL Server 2012 では、SQL Server Management Studio または Transact-SQL を使用して CHECK 制約を無効にできます。 CHECK 制約はレプリケーションに対して明示的に無効にすることもできます。これは、以前のバージョンの SQL Server からのデータをパブリッシュする場合に便利です。

注意

レプリケーションを使用してテーブルをパブリッシュした場合、レプリケーション エージェントが実行する操作に対しては CHECK 制約が自動的に無効になります。 レプリケーション エージェントがサブスクライバー側で挿入、更新、または削除を実行した場合、制約のチェックは行われません。ユーザーが挿入、更新、または削除を実行した場合は、制約のチェックが行われます。 制約がレプリケーション エージェントに対して無効になるのは、データが最初に挿入、更新、または削除された際に、発行者側で既に制約がチェックされているためです。 詳細については、「スキーマ オプションの指定」を参照してください。

このトピックの内容

  • 作業を開始する準備:

    セキュリティ

  • レプリケーションに対して CHECK 制約を無効にするために使用するもの:

    SQL Server Management Studio

    Transact-SQL

作業を開始する準備

セキュリティ

権限

テーブルに対する ALTER 権限が必要です。

[トップに戻る] リンクで使用される矢印アイコン[Top]

SQL Server Management Studio の使用

レプリケーションに対して CHECK 制約を無効にするには

  1. オブジェクト エクスプローラーで、変更する CHECK 制約が設定されているテーブルを展開し、[制約] フォルダーを展開します。

  2. 変更する CHECK 制約を右クリックし、[変更] をクリックします。

  3. [CHECK 制約] ダイアログ ボックスで、[テーブル デザイナー][レプリケーションに対して適用] の値として [いいえ] を選択します。

  4. [閉じる] をクリックします。

[トップに戻る] リンクで使用される矢印アイコン[Top]

Transact-SQL の使用

レプリケーションに対して CHECK 制約を無効にするには

  1. オブジェクト エクスプローラーで、データベース エンジンのインスタンスに接続します。

  2. [標準] ツール バーの [新しいクエリ] をクリックします。

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、[実行] をクリックします。 最初の例では、IDENTITY 列を含むテーブルとテーブルに対する CHECK 制約を作成します。 次に、制約を削除した後、NOT FOR REPLICATION 句を指定して制約を再作成します。

    USE AdventureWorks2012;
    GO
    CREATE TABLE dbo.doc_exd (column_a int IDENTITY (1,1) 
    CONSTRAINT exd_check CHECK (column_a > 1)) 
    
    ALTER TABLE dbo.doc_exd 
    DROP CONSTRAINT exd_check; 
    GO
    ALTER TABLE dbo.doc_exd  
    ADD CONSTRAINT exd_check CHECK NOT FOR REPLICATION (column_a > 1);
    

詳細については、「ALTER TABLE (Transact-SQL)」を参照してください。

[トップに戻る] リンクで使用される矢印アイコン[Top]

関連項目

概念

スキーマ オプションの指定