スキーマ変更のレプリケート

適用対象: SQL ServerAzure SQL Managed Instance

このトピックでは、SQL Server Management Studio または Transact-SQL を使用して、SQL Server でスキーマの変更をレプリケートする方法について説明します。

パブリッシュされたアーティクルに対し、次のようなスキーマ変更を行った場合、変更内容が既定で Microsoft SQL Server サブスクライバーに反映されます。

  • ALTER TABLE

  • ALTER VIEW

  • ALTER PROCEDURE

  • ALTER FUNCTION

  • ALTER TRIGGER

このトピックの内容

はじめに

制限事項と制約事項

  • ALTER TABLE ... DROP COLUMN ステートメントは、スキーマ変更のレプリケーションを無効にした場合でも、サブスクリプションに削除対象の列が含まれているすべてのサブスクライバーに必ずレプリケートされます。

SQL Server Management Studio を使用する

出版物に対するスキーマ変更をレプリケートしない場合は、[パブリケーションのプロパティ - <パブリケーション]> ダイアログ ドロップダウン リストでスキーマ変更のレプリケーションを無効にします。 このダイアログ ボックスへのアクセス方法の詳細については、「パブリケーション プロパティの表示および変更」を参照してください。

スキーマ変更のレプリケーションを無効にするには

  1. [パブリケーションのプロパティ - <パブリケーション]> ダイアログ ドロップダウン リストの [サブスクリプション オプション] ページで、[スキーマ変更のレプリケート] プロパティの値を [False] に設定します。

  2. [OK] を選択します。

    特定のスキーマ変更だけを反映させるには、スキーマを変更する前にプロパティを [True] に設定し、変更後に [False] に設定します。 逆に、ほとんどのスキーマ変更を反映するには、スキーマ変更前にプロパティを [False] に設定し、変更後に [True] に設定します。

Transact-SQL の使用

レプリケーションのストアド プロシージャを使用すると、これらのスキーマ変更をレプリケートするかどうかを指定できます。 どのストアド プロシージャを使用するかは、パブリケーションの種類によって異なります。

スキーマ変更をレプリケートしないスナップショット パブリケーションまたはトランザクション パブリケーションを作成するには

  1. パブリッシャーのパブリケーション データベースに対して sp_addpublication (Transact-SQL) を実行します。このとき、@replicate_ddl の値に 0 を指定します。 詳しくは、「 パブリケーションを作成」をご覧ください。

スキーマ変更をレプリケートしないマージ パブリケーションを作成するには

  1. パブリッシャーのパブリケーション データベースに対して sp_addmergepublication (Transact-SQL) を実行します。このとき、@replicate_ddl の値に 0 を指定します。 詳しくは、「 パブリケーションを作成」をご覧ください。

スナップショット パブリケーションまたはトランザクション パブリケーションでスキーマ変更のレプリケートを一時的に無効化するには

  1. スキーマ変更のレプリケーションを伴う出版物に対して、sp_changepublication (Transact-SQL) を実行します。このとき、@property の値には replicate_ddl を、@value の値には 0 を指定します。

  2. パブリッシュされたオブジェクトに対し、DDL コマンドを実行します。

  3. (省略可能) sp_changepublication (Transact-SQL) を実行して、スキーマ変更のレプリケートを再度有効にします。このとき、@property の値には replicate_ddl を、@value の値には 1 を指定します。

マージ パブリケーションでスキーマ変更のレプリケートを一時的に無効化するには

  1. スキーマ変更のレプリケーションを伴う出版物に対して、sp_changemergepublication (Transact-SQL) を実行します。このとき、@property の値には replicate_ddl を、@value の値には 0 を指定します。

  2. パブリッシュされたオブジェクトに対し、DDL コマンドを実行します。

  3. (省略可能) sp_changemergepublication (Transact-SQL) を実行して、スキーマ変更のレプリケートを再度有効にします。このとき、@property の値には replicate_ddl を、@value の値には 1 を指定します。

参照

パブリケーション データベースでのスキーマの変更
パブリケーション データベースでのスキーマの変更