sp_addmergepublication (Transact-SQL)

新しいマージ パブリケーションを作成します。このストアド プロシージャは、パブリッシャ側でパブリッシュ対象のデータベースについて実行されます。

トピック リンク アイコン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 であり、既定値はありません。publication にはキーワード 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

    すべてのテーブルのキャラクタモードの一括コピー プログラム出力を作成します。MicrosoftSQL Server Compact 3.5 SP1、および 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 3.5 SP1 サブスクライバをサポートするには、この値を TRUE に指定する必要があります。

  • [ @allow\_anonymous = ] 'allow_anonymous'
    特定のパブリケーションに対して、匿名サブスクリプションを作成できるかどうかを指定します。allow_anonymous は nvarchar(5) であり、既定値は TRUE です。TRUE の場合、パブリケーションに対して匿名サブスクリプションを作成できます。SQL Server Compact 3.5 SP1 サブスクライバをサポートするには、この値を 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 の値を指定した場合は、アーティクルのパラメータ化された行フィルタを定義する必要があります。詳細については、「マージ アーティクルに対してパラメータ化した行フィルタを定義および変更する方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。

  • [ @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 3.5 SP1 サブスクライバ上では実行されません。

  • [ @post\_snapshot\_script = ] 'post_snapshot_script'
    .sql ファイルの場所を指すポインタを指定します。post_snapshot_script は nvarchar(255) であり、既定値は NULL です。最初の同期のときに、マージ エージェントは、他のすべてのレプリケートされたオブジェクト スクリプトとデータが適用された後に、ポストスナップショット スクリプトを実行します。このスクリプトは、マージ エージェントがサブスクリプション データベースに接続するときにセキュリティ コンテキスト内で実行されます。ポストスナップショット スクリプトは SQL Server Compact 3.5 SP1 サブスクライバ上では実行されません。

  • [ @compress\_snapshot = ] 'compress_snapshot'
    @alt\_snapshot\_folder の位置に書き込まれるスナップショットを Microsoft CAB 形式で圧縮するかどうかを指定します。compress_snapshot のデータ型は nvarchar(5) で、既定値は FALSE です。false を指定した場合、スナップショットは圧縮されません。true を指定した場合、スナップショットは圧縮されます。2 GB より大きいスナップショット ファイルは圧縮できません。圧縮されたスナップショット ファイルは、マージ エージェントが実行されている場所で解凍されます。一般にプル サブスクリプションでは、サブスクライバでファイルが解凍されるように、圧縮されたスナップショットが使用されます。既定のフォルダ内のスナップショットは、圧縮できません。SQL Server Compact 3.5 SP1 サブスクライバをサポートするには、この値を 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 に設定します。このパラメータの詳細については、「レプリケーション スナップショット エージェント」を参照してください。エージェント パラメータの設定方法の詳細については、「レプリケーション エージェントの管理」を参照してください。

  • [ @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) であり、次のいずれかの値をとります。

    バージョン

    70RTM

    MicrosoftSQL Server 7.0

    70SP1

    SQL Server 7.0 Service Pack 1

    70SP2

    SQL Server 7.0 Service Pack 2

    70SP3

    SQL Server 7.0 Service Pack 3

    70SP4

    SQL Server 7.0 Service Pack 4

    80RTM

    MicrosoftSQL Server 2000

    80SP1

    SQL Server 2000 Service Pack 1

    80SP2

    SQL Server 2000 Service Pack 2

    80SP3

    SQL Server 2000 Service Pack 3

    90RTM

    MicrosoftSQL Server 2005

    100RTM

    MicrosoftSQL Server 2008

  • [@replicate_ddl = ] replicate_ddl
    パブリケーションでスキーマ レプリケーションをサポートするかどうかを指定します。replicate_ddl は int であり、既定値は 1 です。1 は、パブリッシャで実行されるデータ定義言語 (DDL) ステートメントがレプリケートされることを示し、0 は、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 3.5 SP1 サブスクライバをサポートするには、この値を 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_subscription1 の値が指定されていて、パブリケーションへの変更により必要な自動再初期化を実行する前に、サブスクライバから変更をアップロードするかどうかを指定します。automatic_reinitialization_policy は bit であり、既定値は 0 です。1 を指定すると、自動再初期化が発生する前に変更がサブスクライバからアップロードされます。

    重要な注意事項重要

    パラメータ化フィルタを追加、削除、変更する場合は、再初期化の際、サブスクライバで保留中の変更をパブリッシャにアップロードできません。保留中の変更をアップロードしたい場合は、フィルタを変更する前にすべてのサブスクリプションを同期してください。

  • [ @conflict\_logging = ] 'conflict_logging'
    競合レコードの保存先を指定します。conflict_logging は nvarchar(15) であり、次のいずれかの値をとります。

    説明

    publisher

    競合レコードはパブリッシャに保存されます。

    subscriber

    競合レコードは、競合の原因となったサブスクライバに保存されます。SQL Server Compact 3.5 SP1 サブスクライバではサポートされません。

    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 3.5 SP1 サブスクライバの場合、alternate_snapshot_folder の値は、snapshot_in_default_folder の値が false の場合のみ使用されます。

パブリケーションで DDL レプリケーションが有効になっている場合 (replicate_ddl**=1** の場合)、パブリケーションに対してレプリケーションなしの DDL の変更を行うには、先に sp_changemergepublication を実行して、replicate_ddl を 0 に設定する必要があります。レプリケートされない DDL ステートメントが実行された後で、sp_changemergepublication をもう一度実行して DDL レプリケーションを on に戻しておくこともできます。

使用例

-- 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'AdventureWorks'; 
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 [AdventureWorks]
EXEC sp_addmergepublication 
-- These parameters are optional.
  @publication = @publication,
  -- optional parameters 
  @description = N'Merge publication of AdventureWorks.',
  @publication_compatibility_level  = N'90RTM';

-- 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 のメンバだけです。