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

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

  • [ @allow_anonymous = ] 'allow_anonymous'
    特定のパブリケーションに対して、匿名サブスクリプションを作成できるかどうかを指定します。allow_anonymous は nvarchar(5) であり、既定値は TRUE です。TRUE の場合、パブリケーションに対して匿名サブスクリプションを作成できます。SQL Server Compact 3.5 SP2 サブスクライバーをサポートするには、この値を 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 SP2 サブスクライバー上では実行されません。

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

  • [ @compress_snapshot = ] 'compress_snapshot'
    @alt_snapshot_folder の位置に書き込まれるスナップショットを Microsoft CAB 形式で圧縮するかどうかを指定します。compress_snapshot のデータ型は nvarchar(5) で、既定値は FALSE です。false を指定した場合、スナップショットは圧縮されません。true を指定した場合、スナップショットは圧縮されます。2 GB より大きいスナップショット ファイルは圧縮できません。圧縮されたスナップショット ファイルは、マージ エージェントが実行されている場所で解凍されます。一般にプル サブスクリプションでは、サブスクライバーでファイルが解凍されるように、圧縮されたスナップショットが使用されます。既定のフォルダー内のスナップショットは、圧縮できません。SQL Server Compact 3.5 SP2 サブスクライバーをサポートするには、この値を 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 3.5 SP2 サブスクライバーでは、削除が正しく反映されるように 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) であり、次のいずれかの値をとります。

    バージョン

    70RTM

    SQL 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

    SQL Server 2000

    80SP1

    SQL Server 2000 Service Pack 1

    80SP2

    SQL Server 2000 Service Pack 2

    80SP3

    SQL Server 2000 Service Pack 3

    90RTM

    SQL Server 2005

    100RTM

    SQL Server 2008

  • [ @replicate_ddl = ] replicate_ddl
    パブリケーションでスキーマ レプリケーションをサポートするかどうかを指定します。replicate_ddl は int であり、既定値は 1 です。1 は、パブリッシャーで実行されるデータ定義言語 (DDL) ステートメントがレプリケートされることを示し、0 は、DDL ステートメントがレプリケートされないことを示します。詳細については、「パブリケーション データベースでのスキーマの変更」を参照してください。

    @replicate_ddl パラメーターは、DDL ステートメントで列が追加されるときに受け入れられます。@replicate_ddl パラメーターは、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 3.5 SP2 サブスクライバーをサポートするには、この値を 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 SP2 サブスクライバーではサポートされません。

    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 SP2 サブスクライバーの場合、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'AdventureWorks2008R2'; 
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 [AdventureWorks2008R2]
EXEC sp_addmergepublication 
-- These parameters are optional.
  @publication = @publication,
  -- optional parameters 
  @description = N'Merge publication of AdventureWorks2008R2.',
  @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 のメンバーだけです。