スキーマの変更をレプリケートする方法 (レプリケーション Transact-SQL プログラミング)

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

  • ALTER TABLE
  • ALTER VIEW
  • ALTER PROCEDURE
  • ALTER FUNCTION
  • ALTER TRIGGER

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

ms147331.note(ja-jp,SQL.90).gifメモ :
ALTER TABLE DROP COLUMN は、@replicate_ddl パラメータの値に関係なく、削除対象の列をパーティションに含むすべてのサブスクリプションに対して常にレプリケートされます。

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

  1. パブリッシャ側のパブリケーション データベースに対して sp_addpublication (Transact-SQL) を実行します。このとき、@replicate_ddl には 0 を指定します。詳細については、「パブリケーションを作成する方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。

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

  1. パブリッシャ側のパブリケーション データベースに対して sp_addmergepublication (Transact-SQL) を実行します。このとき、@replicate_ddl には 0 を指定します。詳細については、「パブリケーションを作成する方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。

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

  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 を指定します。

参照

その他の技術情報

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

ヘルプおよび情報

SQL Server 2005 の参考資料の入手