適用対象:SQL Server
Azure 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 を使用する
出版物に対するスキーマ変更をレプリケートしない場合は、[パブリケーションのプロパティ - <パブリケーション]> ダイアログ ドロップダウン リストでスキーマ変更のレプリケーションを無効にします。 このダイアログ ボックスへのアクセス方法の詳細については、「パブリケーション プロパティの表示および変更」を参照してください。
スキーマ変更のレプリケーションを無効にするには
<Publication> - Publication Properties ダイアログ ボックスの [サブスクリプション オプション] ページで、[スキーマ変更のレプリケート] プロパティの値を False に設定します。
[OK] を選択します。
特定のスキーマ変更だけを反映させるには、スキーマを変更する前にプロパティを [True] に設定し、変更後に [False] に設定します。 逆に、ほとんどのスキーマ変更は伝播させるものの、特定の変更は伝播させないようにするには、スキーマ変更の前にプロパティを False に設定し、その変更を行った後で True に設定します。
Transact-SQL の使用
レプリケーションのストアド プロシージャを使用すると、これらのスキーマ変更をレプリケートするかどうかを指定できます。 どのストアド プロシージャを使用するかは、パブリケーションの種類によって異なります。
スキーマ変更をレプリケートしないスナップショット パブリケーションまたはトランザクション パブリケーションを作成するには
- パブリッシャーのパブリケーション データベースに対して sp_addpublication (Transact-SQL) を実行します。このとき、
0の値に@replicate_ddlを指定します。 詳しくは、「 パブリケーションを作成」をご覧ください。
スキーマ変更をレプリケートしないマージ パブリケーションを作成するには
- パブリッシャーのパブリケーション データベースに対して sp_addmergepublication (Transact-SQL) を実行します。このとき、
0の値に@replicate_ddlを指定します。 詳しくは、「 パブリケーションを作成」をご覧ください。
スナップショット パブリケーションまたはトランザクション パブリケーションでスキーマ変更のレプリケーションを一時的に無効にするには
スキーマ変更のレプリケーションを伴う出版物に対して、sp_changepublication (Transact-SQL) を実行します。このとき、
replicate_ddlの値には@propertyを、0の値には@valueを指定します。パブリッシュされたオブジェクトに対し、DDL コマンドを実行します。
(省略可能) sp_changepublication (Transact-SQL) を実行して、スキーマ変更のレプリケートを再度有効にします。このとき、
replicate_ddlの値には@propertyを、1の値には@valueを指定します。
マージ パブリケーションでスキーマ変更のレプリケートを一時的に無効化するには
スキーマ変更のレプリケーションを伴う出版物に対して、sp_changemergepublication (Transact-SQL) を実行します。このとき、
replicate_ddlの値には@propertyを、0の値には@valueを指定します。パブリッシュされたオブジェクトに対し、DDL コマンドを実行します。
(省略可能) sp_changemergepublication (Transact-SQL) を実行して、スキーマ変更のレプリケートを再度有効にします。このとき、
replicate_ddlの値には@propertyを、1の値には@valueを指定します。