sp_addmergepublication (Transact-SQL)
新しいマージ パブリケーションを作成します。 このストアド プロシージャは、パブリッシャー側でパブリッシュ対象のデータベースについて実行されます。
構文
sp_addmergepublication [ @publication = ] 'publication'
[ , [ @description = ] 'description'
[ , [ @retention = ] retention ]
[ , [ @sync_mode = ] 'sync_mode' ]
[ , [ @allow_push = ] 'allow_push' ]
[ , [ @allow_pull = ] 'allow_pull' ]
[ , [ @allow_anonymous = ] 'allow_anonymous' ]
[ , [ @enabled_for_internet = ] 'enabled_for_internet' ]
[ , [ @centralized_conflicts = ] 'centralized_conflicts' ]
[ , [ @dynamic_filters = ] 'dynamic_filters' ]
[ , [ @snapshot_in_defaultfolder = ] 'snapshot_in_default_folder' ]
[ , [ @alt_snapshot_folder = ] 'alternate_snapshot_folder' ]
[ , [ @pre_snapshot_script = ] 'pre_snapshot_script' ]
[ , [ @post_snapshot_script = ] 'post_snapshot_script' ]
[ , [ @compress_snapshot = ] 'compress_snapshot' ]
[ , [ @ftp_address = ] 'ftp_address' ]
[ , [ @ftp_port = ] ftp_port ]
[ , [ @ftp_subdirectory = ] 'ftp_subdirectory' ]
[ , [ @ftp_login = ] 'ftp_login' ]
[ , [ @ftp_password = ] 'ftp_password' ]
[ , [ @conflict_retention = ] conflict_retention ]
[ , [ @keep_partition_changes = ] 'keep_partition_changes' ]
[ , [ @allow_subscription_copy = ] 'allow_subscription_copy' ]
[ , [ @allow_synctoalternate = ] 'allow_synctoalternate' ]
[ , [ @validate_subscriber_info = ] 'validate_subscriber_info' ]
[ , [ @add_to_active_directory = ] 'add_to_active_directory' ]
[ , [ @max_concurrent_merge = ] maximum_concurrent_merge ]
[ , [ @max_concurrent_dynamic_snapshots = ] max_concurrent_dynamic_snapshots ]
[ , [ @use_partition_groups = ] 'use_partition_groups' ]
[ , [ @publication_compatibility_level = ] 'backward_comp_level' ]
[ , [ @replicate_ddl = ] replicate_ddl ]
[ , [ @allow_subscriber_initiated_snapshot = ] 'allow_subscriber_initiated_snapshot' ]
[ , [ @allow_web_synchronization = ] 'allow_web_synchronization' ]
[ , [ @web_synchronization_url = ] 'web_synchronization_url' ]
[ , [ @allow_partition_realignment = ] 'allow_partition_realignment' ]
[ , [ @retention_period_unit = ] 'retention_period_unit' ]
[ , [ @generation_leveling_threshold = ] generation_leveling_threshold ]
[ , [ @automatic_reinitialization_policy = ] automatic_reinitialization_policy ]
[ , [ @conflict_logging = ] 'conflict_logging' ]
引数
[ @publication = ] 'publication'
作成するマージ パブリケーションの名前です。 publication のデータ型は sysname であり、キーワード ALL は指定できません。 パブリケーションの名前は、データベース内で一意である必要があります。[ @description = ] 'description'
パブリケーションの説明を指定します。 description のデータ型は nvarchar(255) で、既定値は NULL です。[ @retention = ] retention
指定した publication への変更の保有期間を保有期間単位で指定します。 retention のデータ型は int であり、既定の単位は 14 です。 保有期間の単位は retention_period_unit で定義します。 保有期間内にサブスクリプションが同期されず、受信した保留中の変更がディストリビューター側でクリーンアップ操作によって削除された場合、サブスクリプションは有効期限切れとなり、再初期化する必要があります。 最大許容保有期間は、 現在の日付から 9999 年 12 月 31 日までの日数です。注 マージ パブリケーションの保有期間には、異なるタイム ゾーンのサブスクライバーに対応するため、24 時間の猶予期間があります。 たとえば、保有期間を 1 日に設定した場合、実際の保有期間は 48 時間となります。
[ @sync_mode = ] 'sync_mode'
サブスクライバーのパブリケーションに対する初期同期モードです。 sync_mode のデータ型は nvarchar(10) で、次のいずれかの値を指定できます。値
説明
native (既定値)
すべてのテーブルのネイティブ モードの一括コピー プログラム出力を作成します。
character
すべてのテーブルのキャラクターモードの一括コピー プログラム出力を作成します。 Microsoft SQL Server Compact、および SQL Server 以外のサブスクライバーをサポートする場合に必要です。
[ @allow_push = ] 'allow_push'
特定のパブリケーションに対して、プッシュ サブスクリプションを作成できるかどうかを指定します。 allow_push のデータ型は nvarchar(5) で、既定値は TRUE です。TRUE の場合、パブリケーションに対してプッシュ サブスクリプションを作成できます。[ @allow_pull = ] 'allow_pull'
特定のパブリケーションに対して、プル サブスクリプションを作成できるかどうかを指定します。 allow_pull のデータ型は nvarchar(5) で、既定値は TRUE です。TRUE の場合、パブリケーションに対してプル サブスクリプションを作成できます。 SQL Server Compact サブスクライバーをサポートするには、この値を TRUE に指定する必要があります。[ @allow_anonymous = ] 'allow_anonymous'
特定のパブリケーションに対して、匿名サブスクリプションを作成できるかどうかを指定します。 allow_anonymous のデータ型は nvarchar(5) で、既定値は TRUE です。TRUE の場合、パブリケーションに対して匿名サブスクリプションを作成できます。 SQL Server Compact サブスクライバーをサポートするには、この値を true に指定する必要があります。[ @enabled_for_internet = ] 'enabled_for_internet'
パブリケーションをインターネット対応にするかどうかを指定し、サブスクライバーへのスナップショット ファイルの転送にファイル転送プロトコル (FTP) を使用できるかどうかを決定します。 enabled_for_internet のデータ型は nvarchar(5) で、既定値は FALSE です。 true の場合、パブリケーションの同期ファイルは、C:\Program Files\Microsoft SQL Server\MSSQL\MSSQL.x\Repldata\Ftp ディレクトリに格納されます。 ユーザーは Ftp ディレクトリを作成する必要があります。 false を指定した場合、パブリケーションはインターネット アクセスに対応しません。[ @centralized_conflicts =] 'centralized_conflicts'
このパラメーターは、スクリプトの下位互換性を確保するために用意されているものであり、推奨されません。 競合レコードが格納されている場所を指定するには、conflict_logging を使用します。[ @dynamic_filters =] 'dynamic_filters'
マージ パブリケーションでパラメーター化された行フィルターを使用できるようにします。 dynamic_filters のデータ型は nvarchar(5) で、既定値は FALSE です。注 このパラメーターは使用せず、SQL Server がパラメーター化された行フィルターが使用されているかどうかを自動的に判定できるようにしてください。 dynamic_filters に true の値を指定した場合は、アーティクルのパラメーター化された行フィルターを定義する必要があります。 詳細については、「マージ アーティクルのパラメーター化された行フィルターの定義および変更」を参照してください。
[ @snapshot_in_defaultfolder = ] 'snapshot_in_default_folder'
スナップショット ファイルが既定のフォルダーに格納されるかどうかを示します。 snapshot_in_default_folder のデータ型は nvarchar(5) で、既定値は TRUE です。 true を指定した場合、スナップショット ファイルは既定のフォルダーに格納されます。 false を指定した場合、スナップショット ファイルは alternate_snapshot_folder で指定された代替位置に格納されます。 他のサーバー、ネットワーク ドライブ、または CD-ROM やリムーバブル ディスクなどのリムーバブル メディアに代替位置を設定できます。 また、スナップショット ファイルは、後でサブスクライバーにより取得するために、ファイル転送プロトコル (FTP) サイトに保存してもかまいません。 このパラメーターを true に設定したうえで、alt_snapshot_folder パラメーターで代替位置を指定することもできます。 このパラメーターの組み合わせを指定すると、スナップショット ファイルは、既定のフォルダーと代替位置の両方に格納されます。[ @alt_snapshot_folder = ] 'alternate_snapshot_folder'
スナップショットの代替フォルダーの場所。 alternate_snapshot_folder のデータ型は nvarchar(255) で、既定値は NULL です。[ @pre_snapshot_script = ] 'pre_snapshot_script'
.sql ファイルの場所を指すポインターを指定します。 pre_snapshot_script のデータ型は nvarchar(255) で、既定値は NULL です。 マージ エージェントは、サブスクライバーでスナップショットを適用するときに、レプリケートされたオブジェクト スクリプトより前に、プリスナップショット スクリプトを実行します。 このスクリプトは、マージ エージェントがサブスクリプション データベースに接続するときにセキュリティ コンテキスト内で実行されます。 プリスナップショット スクリプトは SQL Server Compact サブスクライバー上では実行されません。[ @post_snapshot_script = ] 'post_snapshot_script'
.sql ファイルの場所を指すポインターを指定します。 post_snapshot_script のデータ型は nvarchar(255) で、既定値は NULL です。 最初の同期のときに、マージ エージェントは、他のすべてのレプリケートされたオブジェクト スクリプトとデータが適用された後に、ポストスナップショット スクリプトを実行します。 このスクリプトは、マージ エージェントがサブスクリプション データベースに接続するときにセキュリティ コンテキスト内で実行されます。 ポストスナップショット スクリプトは SQL Server Compact サブスクライバー上では実行されません。[ @compress_snapshot = ] 'compress_snapshot'
@alt_snapshot_folder の位置に書き込まれるスナップショットを Microsoft CAB 形式で圧縮するかどうかを指定します。 compress_snapshot のデータ型は nvarchar(5) で、既定値は FALSE です。 false を指定した場合、スナップショットは圧縮されません。true を指定した場合、スナップショットは圧縮されます。 2 GB より大きいスナップショット ファイルは圧縮できません。 圧縮されたスナップショット ファイルは、マージ エージェントが実行されている場所で解凍されます。一般にプル サブスクリプションでは、サブスクライバーでファイルが解凍されるように、圧縮されたスナップショットが使用されます。 既定のフォルダー内のスナップショットは、圧縮できません。 SQL Server Compact サブスクライバーをサポートするには、この値を false に指定する必要があります。[ @ftp_address = ] 'ftp_address'
ディストリビューター用の FTP サービスのネットワーク アドレスです。 ftp_address のデータ型は sysname で、既定値は NULL です。 サブスクライバーのマージ エージェントが検索するパブリケーション スナップショット ファイルの場所を指定します。 このプロパティはパブリケーションごとに格納されるため、個々のパブリケーションで別の ftp_address を使用することができます。 パブリケーションでは、FTP を使用したスナップショットの配布がサポートされている必要があります。[ @ftp_port= ] ftp_port
ディストリビューター用の FTP サービスのポート番号です。 ftp_port のデータ型は int で、既定値は 21 です。 サブスクライバーのマージ エージェントが検索するパブリケーション スナップショット ファイルの場所を指定します。 このプロパティは、パブリケーションごとに格納されるため、個々のパブリケーションが独自の ftp_port を持つことができます。[ @ftp_subdirectory = ] 'ftp_subdirectory'
パブリケーションが FTP を利用したスナップショットの配布をサポートしている場合に、サブスクライバーのマージ エージェントがスナップショット ファイルを取得できる場所を指定します。 ftp_subdirectory のデータ型は nvarchar(255) で、既定値は NULL です。 このプロパティはパブリケーションごとに格納されるため、個々のパブリケーションでは、独自の ftp_subdirctory を使用することも、サブディレクトリを使用しないよう選択することもできます。NULL 値は、サブディレクトリを使用しないことを表します。パラメーター化されたフィルターを使用してパブリケーションのスナップショットを事前に生成する場合、各サブスクライバーのパーティションのデータ スナップショットはそれぞれのフォルダーに入っている必要があります。 FTP を使用する事前生成済みのスナップショットのディレクトリ構造は、次の構造に従っている必要があります。
alternate_snapshot_folder\ftp\publisher_publicationDB_publication\partitionID
注 上記の斜体の値は、パブリケーションおよびサブスクライバー パーティションの詳細によって異なります。
[ @ftp_login = ] 'ftp_login'
FTP サービスに接続するときに使用するユーザー名。 ftp_login のデータ型は sysname で、既定値は 'anonymous' です。[ @ftp_password = ] 'ftp_password'
FTP サービスに接続するときに使用するユーザー パスワードです。 ftp_password のデータ型は sysname で、既定値は NULL です。セキュリティに関する注意 空白のパスワードは使用しないでください。 強力なパスワードを使用してください。
[ @conflict_retention = ] conflict_retention
競合を保有する保有期間の日数。 conflict_retention のデータ型は int であり、既定値は 14 日で、競合する行が競合テーブルから削除されるまで 14 日間保有されます。[ @keep_partition_changes = ] 'keep_partition_changes'
事前計算済みパーティションを使用できない場合に、パーティションの変更の最適化を有効にするかどうかを指定します。 keep_partition_changes のデータ型は nvarchar(5) で、既定値は TRUE です。 false を指定すると、パーティションの変更は最適化されず、事前計算済みパーティションを使用しない場合、すべてのサブスクライバーに送信されたパーティションは、パーティションのデータが変更されるときに検証されます。 true を指定した場合、パーティションの変更が最適化されます。変更されたパーティションにある行を持つサブスクライバーだけが対象となります。 事前計算済みパーティションを使用する場合、use_partition_groups は true に、keep_partition_changes は false に設定します。 詳細については、「事前計算済みパーティションによるパラメーター化されたフィルターのパフォーマンス最適化」を参照してください。注 keep_partition_changes の値を true にする場合は、スナップショット エージェント パラメーターの -MaxNetworkOptimization の値を 1 に設定します。 このパラメーターの詳細については、「レプリケーション スナップショット エージェント」を参照してください。 エージェント パラメーターの設定方法の詳細については、「レプリケーション エージェントの管理」を参照してください。
SQL Server Compactサブスクライバーを使用して、keep_partition_changes を true に設定して、削除を正しく反映する必要があります。 false に設定すると、サブスクライバーに予想よりも多くの行が含まれる場合があります。
[ @allow_subscription_copy= ] 'allow_subscription_copy'
このパブリケーションにサブスクライブするサブスクリプション データベースをコピーする機能を有効または無効にします。 allow_subscription_copy のデータ型は nvarchar(5) で、既定値は FALSE です。 コピーされるサブスクリプション データベースのサイズは 2 ギガバイト (GB) 未満でなければなりません。[ @allow_synctoalternate = ] 'allow_synctoalternate'
単に情報を示すためだけに特定されます。サポートされていません。将来の互換性は保証されません。[ @validate_subscriber_info = ] 'validate_subscriber_info'
パラメーター化された行フィルターを使用する場合、パブリッシュされたデータのサブスクライバー パーティションを定義するのに使用する関数を一覧表示します。 validate_subscriber_info のデータ型は nvarchar(500) で、既定値は NULL です。 この情報は、マージ エージェントがサブスクライバーのパーティションを検証するときに使用されます。 たとえば、パラメーター化された行フィルターで SUSER_SNAME を使用する場合、パラメーターは @validate\_subscriber\_info=N'SUSER_SNAME()' である必要があります。注 このパラメーターは指定しないで、代わりに SQL Server がフィルター選択条件を自動的に決定できるようにしてください。
[ @add_to_active_directory = ] 'add_to_active_directory'
このパラメーターは、スクリプトの下位互換性を確保するために用意されているものであり、推奨されません。 Microsoft Active Directory にパブリケーション情報を追加することはできません。[ @max_concurrent_merge = ] maximum_concurrent_merge
同時に実行できるマージ処理の最大数です。 maximum_concurrent_merge のデータ型は int で、既定値は 0 です。 このプロパティの値が 0 の場合、どの時点でも、同時に実行できるマージ処理数に制限はありません。 このプロパティでは、マージ パブリケーションに対して同時に実行できる同時マージ処理の数を制限します。 同時にスケジュールに組み込まれているマージ処理の数が、指定された実行可能な数より大きい場合、余分なジョブは待ち行列に挿入され、現在実行されているマージ処理が終わるまで待機状態に置かれます。[ @max_concurrent_dynamic_snapshots =] max_concurrent_dynamic_snapshots
サブスクライバー パーティションのフィルター選択されたデータ スナップショットを生成するために、同時に実行できるスナップショット エージェントの最大セッション数です。 maximum_concurrent_dynamic_snapshots のデータ型は int で、既定値は 0 です。 0 を指定した場合、スナップショット セッションの数に制限がなくなります。 同時にスケジュールに組み込まれているスナップショット処理の数が、指定された実行可能な数より大きい場合、余分なジョブは待ち行列に挿入され、現在実行されているスナップショット処理が終わるまで待機状態に置かれます。[ @use_partition_groups = ] 'use_partition_groups'
事前計算済みパーティションを使用して、同期処理を最適化することを指定します。 use_partition_groups のデータ型は nvarchar(5) で、次のいずれかの値を指定できます。値
説明
true
パブリケーションは事前計算済みパーティションを使用します。
false
パブリケーションは事前計算済みパーティションを使用しません。
NULL (既定値)
システムがパーティション分割ストラテジを決定します。
既定では事前計算済みパーティションを使用します。 事前計算済みパーティションを使用しないようにするには、use_partition_groups を false に設定する必要があります。 NULL に指定すると、システムが事前計算済みパーティションを使用するかどうかを決定します。 事前計算済みパーティションが使用できない場合、この値は実質的に false となり、エラーは生成されません。 そのような場合、keep_partition_changes を true に設定すると、ある程度最適化することができます。 詳細については、「パラメーター化された行フィルター」および「事前計算済みパーティションによるパラメーター化されたフィルターのパフォーマンス最適化」を参照してください。
[ @publication_compatibility_level = ] backward_comp_level
パブリケーションの下位互換性を示します。 backward_comp_level のデータ型は nvarchar(6) で、次のいずれかの値を指定できます。値
バージョン
90RTM
SQL Server 2005
100RTM
SQL Server 2008
[ @replicate_ddl = ] replicate_ddl
スキーマ レプリケーションがパブリケーションに対してサポートされているかどうかを示します。 replicate_ddl のデータ型は int で、既定値は 1 です。 1 は、パブリッシャーで実行されるデータ定義言語 (DDL) ステートメントがレプリケートされることを示し、0 は、DDL ステートメントがレプリケートされないことを示します。 詳細については、「パブリケーション データベースでのスキーマの変更」を参照してください。DDL ステートメントによって列が追加される場合、@replicate_ddl パラメーターは有効になります。 次の理由により、DDL ステートメントによって列が変更または削除される場合、@replicate_ddl パラメーターは無視されます。
列が削除される場合は、sysarticlecolumns を更新して、新しい DML ステートメントに削除された列が含まれないようにする必要があります。そうしないと、ディストリビューション エージェントが失敗する原因となります。 レプリケーションでは常にスキーマの変更をレプリケートする必要があるため、@replicate_ddl パラメーターは無視されます。
列が変更される場合は、ソースのデータ型または NULL 値の許容属性が変更され、サブスクライバーにあるテーブルと互換性のない値が DML ステートメントに含まれる可能性があります。 そうした DML ステートメントは、ディストリビューション エージェントが失敗する原因となる場合があります。 レプリケーションでは常にスキーマの変更をレプリケートする必要があるため、@replicate_ddl パラメーターは無視されます。
DDL ステートメントによって新しい列が追加される場合、新しい列は sysarticlecolumns に含まれません。 DML ステートメントによって、新しい列のデータがレプリケートされることはありません。 DDL をレプリケートするかしないかのどちらかが許容されるため、パラメーターは有効になります。
[ @allow_subscriber_initiated_snapshot = ] 'allow_subscriber_initiated_snapshot'
このパブリケーションのサブスクライバーが、データ パーティションのフィルター選択されたスナップショットを生成するスナップショット処理を開始できるかどうかを指定します。 allow_subscriber_initiated_snapshot のデータ型は nvarchar(5) で、既定値は FALSE です。 true は、サブスクライバーがスナップショット処理を開始できることを示します。[ @allow_web_synchronization = ] 'allow_web_synchronization'
Web 同期に対してパブリケーションを有効にするかどうかを指定します。 allow_web_synchronization のデータ型は nvarchar(5) で、既定値は FALSE です。 true を指定すると、HTTPS 経由でこのパブリケーションへのサブスクリプションを同期することができます。 詳細については、「マージ レプリケーションの Web 同期」を参照してください。 SQL Server Compact サブスクライバーをサポートするには、この値を true に指定する必要があります。[ @web_synchronization_url= ] 'web_synchronization_url'
Web 同期で使用するインターネット URL の既定値を指定します。 web_synchronization_url i のデータ型は nvarchar(500) で、既定値は NULL です。 sp_addmergepullsubscription_agent の実行時にインターネット URL が明示的に設定されていない場合の既定のインターネット URL を定義します。[ @allow_partition_realignment = ] 'allow_partition_realignment'
パブリッシャーで、行の変更によりパーティションに変更があった場合、削除をサブスクライバーに送信するかどうかを決定します。 allow_partition_realignment のデータ型は nvarchar(5) で、既定値は TRUE です。 true の場合、サブスクライバーの、パーティションの一部ではなくなったデータの削除によるパーティションの変更結果を反映するために、削除がサブスクライバーに送信されます。 false を指定すると、データはサブスクライバーでは古いパーティションのまま残され、パブリッシャー側のこのデータに対する変更はこのサブスクライバーにはレプリケートされませんが、サブスクライバー側で行われた変更はパブリッシャーにレプリケートされます。 allow_partition_realignment を false にする設定は、履歴を参照する目的でデータにアクセスできるようにするために、サブスクリプションで古いパーティションのデータを残しておく場合に使用します。注 allow_partition_realignment を false に設定した結果としてサブスクライバーに残されるデータは、読み取り専用データとして扱われる必要があります。ただし、これはレプリケーション システムで強制されるわけではありません。
[ @retention_period_unit = ] 'retention_period_unit'
retention で設定された保有期間の単位を指定します。 retention_period_unit のデータ型は nvarchar(10) で、次のいずれかの値を指定できます。値
バージョン
day (既定)
保有期間を日単位で指定します。
week
保有期間を週単位で指定します。
month
保有期間を月単位で指定します。
year
保有期間を年単位で指定します。
[ @generation_leveling_threshold= ] generation_leveling_threshold
1 回の生成に含まれる変更の数です。 生成とは、パブリッシャーまたはサブスクライバーに配信される変更の集まりです。 generation_leveling_threshold のデータ型は int で、既定値は 1000 です。[ @automatic_reinitialization_policy = ] automatic_reinitialization_policy
@force_reinit_subscription に 1 の値が指定されていて、パブリケーションへの変更により必要な自動再初期化を実行する前に、サブスクライバーから変更をアップロードするかどうかを指定します。 automatic_reinitialization_policy のデータ型は bit で、既定値は 0 です。 1 を指定すると、自動再初期化が発生する前に変更がサブスクライバーからアップロードされます。重要 パラメーター化フィルターを追加、削除、変更する場合は、再初期化の際、サブスクライバーで保留中の変更をパブリッシャーにアップロードできません。 保留中の変更をアップロードしたい場合は、フィルターを変更する前にすべてのサブスクリプションを同期してください。
[ @conflict_logging = ] 'conflict_logging'
競合レコードの保存先を指定します。 conflict_logging のデータ型は nvarchar(15) で、次のいずれかの値を指定できます。値
説明
publisher
競合レコードはパブリッシャーに保存されます。
subscriber
競合レコードは、競合の原因となったサブスクライバーに保存されます。 SQL Server Compact サブスクライバーではサポートされません。
both
競合レコードは、パブリッシャーとサブスクライバーの両方に保存されます。
NULL (既定値)
backward_comp_level の値が 90RTM の場合は both に、それ以外のすべての場合は publisher に、conflict_logging が自動的に設定されます。
リターン コードの値
成功した場合は 0 を、失敗した場合は 1 をそれぞれ返します。
説明
sp_addmergepublication はマージ レプリケーションで使用します。
@add_to_active_directory パラメーターを使用して Active Directory に対してパブリケーション オブジェクトを一覧表示するには、Active Directory 内で SQL Server オブジェクトをあらかじめ作成しておく必要があります。
同じデータベース オブジェクトをパブリッシュする複数のパブリケーションが存在する場合、replicate_ddl の値が 1 のパブリケーションのみが ALTER TABLE、ALTER VIEW、ALTER PROCEDURE、ALTER FUNCTION、および ALTER TRIGGER DDL の各ステートメントをレプリケートします。 ただし、ALTER TABLE DROP COLUMN DDL ステートメントは、削除された列をパブリッシュしているすべてのパブリケーションによってレプリケートされます。
SQL Server Compact サブスクライバーの場合、alternate_snapshot_folder の値は、snapshot_in_default_folder の値が false の場合のみ使用されます。
パブリケーションで DDL レプリケーションが有効になっている場合 (replicate_ddl = 1 の場合)、パブリケーションに対してレプリケーションなしの DDL の変更を行うには、先に sp_changemergepublication (Transact-SQL) を実行して、replicate_ddl を 0 に設定する必要があります。 レプリケーションなしの DDL ステートメントを実行した後は、sp_changemergepublication を実行して、DDL レプリケーションを再度有効にできます。
使用例
-- To avoid storing the login and password in the script file, the value
-- is passed into SQLCMD as a scripting variable. For information about
-- how to use scripting variables on the command line and in SQL Server
-- Management Studio, see the "Executing Replication Scripts" section in
-- the topic "Programming Replication Using System Stored Procedures".
--Declarations for adding a merge publication
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks2012';
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @login = $(Login);
SET @password = $(Password);
-- Enable merge replication on the publication database, using defaults.
USE master
EXEC sp_replicationdboption
@dbname=@publicationDB,
@optname=N'merge publish',
@value = N'true'
-- Create a new merge publication, explicitly setting the defaults.
USE [AdventureWorks2012]
EXEC sp_addmergepublication
-- These parameters are optional.
@publication = @publication,
-- optional parameters
@description = N'Merge publication of AdventureWorks2012.',
@publication_compatibility_level = N'120RTM';
-- Create a new snapshot job for the publication.
EXEC sp_addpublication_snapshot
@publication = @publication,
@job_login = @login,
@job_password = @password;
GO
権限
sp_addmergepublication を実行できるのは、固定サーバー ロール sysadmin または固定データベース ロール db_owner のメンバーだけです。
関連項目
参照
sp_changemergepublication (Transact-SQL)
sp_dropmergepublication (Transact-SQL)
sp_helpmergepublication (Transact-SQL)
レプリケーション ストアド プロシージャ (Transact-SQL)