sp_changemergepublication (Transact-SQL)

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

トピック リンク アイコンTransact-SQL 構文表記規則

構文

sp_changemergepublication [ @publication= ] 'publication'
    [ , [ @property= ] 'property' ]
    [ , [ @value= ] 'value' ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]

引数

  • [ @publication=\] 'publication'
    パブリケーションの名前を指定します。publication のデータ型は sysname で、既定値はありません。

  • [ @property=\] 'property'
    指定したパブリケーションの変更対象となるプロパティを指定します。property のデータ型は sysname で、表に記載されているいずれかの値を指定できます。

  • [ @value=\] 'value'
    対象となるプロパティの新しい値を指定します。value のデータ型は nvarchar(255) で、表に記載されているいずれかの値を指定できます。

    次の表に、変更可能なパブリケーションのプロパティと、プロパティの値に関する制限を示します。

    プロパティ

    説明

    allow_anonymous

    true

    匿名サブスクリプションを許可します。

     

    false

    匿名サブスクリプションを許可しません。

    allow_partition_realignment

    true

    削除がサブスクライバに送信されることにより、サブスクライバのパーティションの一部ではなくなったデータの削除による、パーティション変更の結果が反映されます。これは既定の動作です。

     

    false

    古いパーティションのデータはサブスクライバ側に残ります。パブリッシャでこのデータに変更を加えてもこのサブスクライバにはレプリケートされません。サブスクライバで加えた変更はパブリッシャにレプリケートされます。これは、履歴を参照する目的でデータにアクセスできるようにするために、サブスクリプションで古いパーティションのデータを残しておく場合に使用します。

    allow_pull

    true

    指定されたパブリケーションに対するプル サブスクリプションを許可します。

     

    false

    指定されたパブリケーションに対するプル サブスクリプションを許可しません。

    allow_push

    true

    指定されたパブリケーションに対するプッシュ サブスクリプションを許可します。

     

    false

    指定されたパブリケーションに対するプッシュ サブスクリプションを許可しません。

    allow_subscriber_initiated_snapshot

    true

    サブスクライバはスナップショット処理を開始できます。

     

    false

    サブスクライバはスナップショット処理を開始できません。

    allow_subscription_copy

    true

    このパブリケーションをサブスクライブするサブスクリプション データベースをコピーすることができます。

     

    false

    このパブリケーションをサブスクライブするサブスクリプション データベースをコピーすることはできません。

    allow_synctoalternate

    true

    代替同期パートナーがこのパブリッシャと同期できるようにします。

     

    false

    代替同期パートナーがこのパブリッシャと同期できないようにします。

    allow_web_synchronization

    true

    サブスクリプションは HTTPS 上で同期できます。

     

    false

    サブスクリプションは HTTPS 上で同期できません。

    alt_snapshot_folder

     

    スナップショットの代替フォルダの場所を示します。

    automatic_reinitialization_policy

    1

    サブスクライバから変更をアップロードしてからサブスクリプションを再初期化します。

     

    0

    最初に変更をアップロードせずにサブスクリプションを再初期化します。

    centralized_conflicts

    true

    すべての競合レコードはパブリッシャに保存されます。このプロパティを変更する場合は、既存のサブスクライバを再初期化する必要があります。

     

    false

    競合の解決で優先されなかった競合レコードはサーバーに保存されます。このプロパティを変更する場合は、既存のサブスクライバを再初期化する必要があります。

    compress_snapshot

    true

    代替スナップショット フォルダ内のスナップショットは CAB 形式に圧縮されます。既定のスナップ フォルダ内のスナップショットは圧縮できません。このプロパティを変更するには、新しいスナップショットが必要です。

     

    false

    既定では、スナップショットは圧縮されません。このプロパティを変更するには、新しいスナップショットが必要です。

    conflict_logging

    publisher

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

     

    subscriber

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

     

    both

    競合レコードは、パブリッシャとサブスクライバの両方に保存されます。

    conflict_retention

     

    競合を保有する保有期間を日数で指定する int です。conflict_retention を 0 に設定すると、競合のクリーンアップが不要であることを意味します。

    description

     

    パブリケーションの説明です。

    dynamic_filters

    true

    パブリケーションは動的な句に基づいてフィルタ選択されます。

     

    false

    パブリケーションは動的にフィルタ選択されません。

    enabled_for_internet

    true

    パブリケーションはインターネットに対応しています。ファイル転送プロトコル (FTP) を使用して、スナップショット ファイルをサブスクライバに転送できます。パブリケーションの同期ファイルは、C:\Program Files\Microsoft SQL Server\MSSQL\Repldata\ftp ディレクトリに格納されます。

     

    false

    パブリケーションはインターネット対応ではありません。

    ftp_address

     

    ディストリビュータ用 FTP サービスのネットワーク アドレスです。パブリケーションのスナップショット ファイルを格納する場所を指定します。

    ftp_login

     

    FTP サービスに接続するときに使用するユーザー名です。

    ftp_password

     

    FTP サービスに接続するときに使用するパスワードです。

    ftp_port

     

    ディストリビュータ用 FTP サービスのポート番号です。パブリケーションのスナップショット ファイルが格納される FTP サイトの TCP ポート番号を指定します。

    ftp_subdirectory

     

    パブリケーションで FTP を使用したスナップショットの配布がサポートされている場合に、スナップショット ファイルが作成される場所を指定します。

    generation_leveling_threshold

    int

    1 回の生成に含まれる変更の数です。生成とは、パブリッシャまたはサブスクライバに配信される変更の集まりです。詳細については、「マージ レプリケーションで変更を追跡および列挙する方法」を参照してください。

    keep_partition_changes

    true

    同期は最適化され、変更されたパーティションの行を持つサブスクライバだけに反映されます。このプロパティを変更するには、新しいスナップショットが必要です。

     

    false

    同期は最適化されず、サブスクライバに送信されるパーティションは、1 つのパーティションでデータが変更されると確認されます。このプロパティを変更するには、新しいスナップショットが必要です。

    max_concurrent_merge

     

    パブリケーションに対して同時に実行できるマージ処理の最大数を表す int です。0 の場合、制限はありません。ここで指定した数を超えるマージ処理が同時に実行されるようにスケジュールすると、超過したジョブはキューに保存されて、現在実行中のマージ処理が終了するまで待機します。

    max_concurrent_dynamic_snapshots

     

    パラメータ化された行フィルタを使用するマージ パブリケーションに対して、フィルタ選択されたデータ スナップショットを生成するために同時実行できるスナップショット セッションの最大数を表す int です。0 の場合、制限はありません。ここで指定した数を超えるスナップショット処理が同時に実行されるようにスケジュールすると、超過したジョブはキューに保存されて、現在実行中のマージ処理が終了するまで待機します。

    post_snapshot_script

     

    .sql ファイルの場所を指すポインタです。ディストリビューション エージェントまたはマージ エージェントは、初期同期で他のすべてのレプリケートされたオブジェクト スクリプトおよびデータが適用された後にポストスナップショット スクリプトを実行します。このプロパティを変更するには、新しいスナップショットが必要です。

    pre_snapshot_script

     

    .sql ファイルの場所を指すポインタです。マージ エージェントは、サブスクライバでスナップショットを適用するときに、レプリケートされたオブジェクト スクリプトより前に、プリスナップショット スクリプトを実行します。このプロパティを変更するには、新しいスナップショットが必要です。

    publication_compatibility_level

    100RTM

    SQL Server 2008

    90RTM

    SQL Server 2005

     

    80SP3

    SQL Server 2000 SP3

    80SP2

    SQL Server 2000 SP2

     

    80SP1

    SQL Server 2000 SP2

     

    80RTM

    SQL Server 2000

     

    70 SP4

    SQL Server 7.0 SP4

     

    70SP3

    SQL Server 7.0 SP3

     

    70SP2

    SQL Server 7.0 SP2

     

    70SP1

    SQL Server 7.0 SP1

     

    70RTM

    SQL Server 7.0

    publish_to_activedirectory

    true

    このパラメータは、スクリプトの下位互換性を確保するために用意されているものであり、推奨されません。現在、Active Directory にはパブリケーション情報を追加できません。

     

    false

    Active Directory からパブリケーション情報を削除します。

    replicate_ddl

    1

    パブリッシャで実行されるデータ定義言語 (DDL) ステートメントがレプリケートされます。

     

    0

    DDL ステートメントはレプリケートされません。

    retention

     

    特定のパブリケーションの変更を保存する retention_period_unit 単位の数を表す int です。保有期間内にサブスクリプションが同期されず、受信した保留中の変更がディストリビュータ側でクリーンアップ操作によって削除された場合、サブスクリプションは有効期限切れとなり、再初期化する必要があります。最大許容保有期間は、現在の日付から 9999 年 12 月 31 日までの日数です。

    注意
    マージ パブリケーションの保有期間には、異なるタイム ゾーンのサブスクライバに対応するため、24 時間の猶予期間があります。

    retention_period_unit

    day

    保有期間を日単位で指定します。

     

    week

    保有期間を週単位で指定します。

     

    month

    保有期間を月単位で指定します。

     

    year

    保有期間を年単位で指定します。

    snapshot_in_defaultfolder

    true

    スナップショット ファイルは既定のスナップショット フォルダに格納されます。

     

    false

    スナップショット ファイルは alt_snapshot_folder で指定した代替位置に格納されます。このパラメータの組み合わせを指定すると、スナップショット ファイルは、既定のフォルダと代替位置の両方に格納されます。

    snapshot_ready

    true

    パブリケーションのスナップショットが使用可能になります。

     

    false

    パブリケーションのスナップショットが使用できなくなります。

    status

    active

    パブリケーションはアクティブな状態です。

     

    inactive

    パブリケーションは非アクティブな状態です。

    sync_mode

    native または

    bcp native

    初期スナップショットに対してすべてのテーブルのネイティブ モードの一括コピー プログラム出力が使用されます。

     

    character

    または bcp character

    初期スナップショットに対してすべてのテーブルの文字モードの一括コピー プログラム出力が使用されます。これは、SQL Server 以外のサブスクライバで必要です。

    use_partition_groups

    注意
    partition_groups を使用した後で、再び setupbelongs を使用し、changemergearticle に use_partition_groups=false を設定すると、スナップショットの取得後に正しく反映されない可能性があります。スナップショットが生成するトリガはパーティション グループに準拠します。 この状況を回避するには、状態を非アクティブに設定して use_partition_groups を変更した後で、状態をアクティブにします。

    true

    パブリケーションは事前計算済みパーティションを使用します。

     

    false

    パブリケーションは事前計算済みパーティションを使用しません。

    validate_subscriber_info

     

    サブスクライバ情報の取得に使用する関数を一覧表示します。次に、情報のパーティション分割が一貫性を保っていることをサブスクライバが確認するときに使用する動的フィルタ選択の基準の妥当性を検証します。

    web_synchronization_url

     

    Web 同期に使用されるインターネット URL の既定値です。

    NULL (既定値)

     

    property 用にサポートされている値の一覧を返します。

  • [ @force_invalidate_snapshot = ] force_invalidate_snapshot
    このストアド プロシージャが実行する操作によって既存のスナップショットが無効になることを許可します。force_invalidate_snapshot のデータ型は bit で、既定値は 0 です。

    0 に設定すると、パブリケーションの変更によってスナップショットが無効になることはありません。変更に新しいスナップショットが必要であることをストアド プロシージャが検出すると、エラーが発生し、変更は行われません。

    1 に設定すると、パブリケーションの変更によってスナップショットが無効になります。既存のサブスクリプションで新しいスナップショットが必要な場合、この値を指定すると、既存のスナップショットを古いスナップショットとしてマークし新しいスナップショットを生成することができます。

    変更によって新しいスナップショットの生成が必要になるプロパティについては、「解説」を参照してください。

  • [ @force_reinit_subscription = ] force_reinit_subscription
    このストアド プロシージャが実行する操作によって、既存のサブスクリプションの再初期化が必要になることを許可します。force_reinit_subscription のデータ型は bit で、既定値は 0 です。

    0 に設定すると、パブリケーションを変更してもサブスクリプションを再初期化する必要はありません。変更に既存のサブスクリプションの再初期化が必要であることをストアド プロシージャが検出すると、エラーが発生し、変更は加えられません。

    1 に設定すると、パブリケーションの変更によって既存のサブスクリプションが再初期化され、サブスクリプションの再初期化が許可されます。

    変更によって既存のサブスクリプションの再初期化が必要になるプロパティについては、「解説」を参照してください。

リターン コードの値

0 (成功) または 1 (失敗)

説明

sp_changemergepublication はマージ レプリケーションで使用します。

次のプロパティを変更するには、新しいスナップショットを生成する必要があります。force_invalidate_snapshot パラメータに値 1 を指定する必要があります。

  • alt_snapshot_folder

  • compress_snapshot

  • dynamic_filters

  • ftp_address

  • ftp_login

  • ftp_password

  • ftp_port

  • ftp_subdirectory

  • post_snapshot_script

  • publication_compatibility_level (80SP3 のみ)

  • pre_snapshot_script

  • snapshot_in_defaultfolder

  • sync_mode

  • use_partition_groups

次のプロパティを変更するには、既存のサブスクリプションを再初期化する必要があります。force_reinit_subscription パラメータに値 1 を指定する必要があります。

  • dynamic_filters

  • validate_subscriber_info

publish_to_active_directory パラメータを使用して Active Directory に対してパブリケーション オブジェクトを一覧表示するには、Active Directory 内で SQL Server オブジェクトをあらかじめ作成しておく必要があります。

使用例

DECLARE @publication AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge'; 

-- Disable DDL replication for the publication.
USE [AdventureWorks2008R2]
EXEC sp_changemergepublication 
  @publication = @publication, 
  @property = N'replicate_ddl', 
  @value = 0,
  @force_invalidate_snapshot = 0, 
  @force_reinit_subscription = 0;
GO

権限

sp_changemergepublication を実行できるのは、sysadmin 固定サーバー ロールまたは db_owner 固定データベース ロールのメンバだけです。