レプリケーションの CHECK 制約の無効化
適用対象: SQL Server 2016 (13.x) 以降
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Microsoft Fabric 内の SQL データベース
SQL Server では、 SQL Server Management Studio または Transact-SQL を使って CHECK 制約を無効にできます。 CHECK 制約はレプリケーションに対して明示的に無効にすることもできます。これは、以前のバージョンの SQL Server からのデータをパブリッシュする場合に便利です。
Note
レプリケーションを使用してテーブルをパブリッシュした場合、レプリケーション エージェントが実行する操作に対しては CHECK 制約が自動的に無効になります。 レプリケーション エージェントがサブスクライバー側で挿入、更新、または削除を実行した場合、制約のチェックは行われません。ユーザーが挿入、更新、または削除を実行した場合は、制約のチェックが行われます。 制約がレプリケーション エージェントに対して無効になるのは、データが最初に挿入、更新、または削除された際に、発行者側で既に制約がチェックされているためです。 詳細については、「スキーマ オプションの指定」を参照してください。
始める前に
セキュリティ
アクセス許可
テーブルに対する ALTER 権限が必要です。
SQL Server Management Studio を使用する
レプリケーションに対して CHECK 制約を無効にするには
オブジェクト エクスプローラーで、変更する CHECK 制約が設定されているテーブルを展開し、 [制約] フォルダーを展開します。
変更する CHECK 制約を右クリックし、 [変更]をクリックします。
[CHECK 制約] ダイアログ ボックスで、 [テーブル デザイナー]の [レプリケーションに対して適用] の値として [いいえ]を選択します。
[閉じる] をクリックします。
Transact-SQL の使用
レプリケーションに対して CHECK 制約を無効にするには
オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。
[標準] ツール バーの [新しいクエリ] をクリックします。
次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] をクリックします。 最初の例では、IDENTITY 列を含むテーブルとテーブルに対する CHECK 制約を作成します。 次に、制約を削除した後、NOT FOR REPLICATION 句を指定して制約を再作成します。
USE AdventureWorks2022; 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)」を参照してください。