sp_changemergepublication (Transact-SQL)

適用対象: SQL サーバー

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

Transact-SQL 構文表記規則

構文

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

引数

[ @publication = ] N'publication'

出版物の名前。 @publicationsysname で、既定値はありません。

[ @property = ] N'property'

指定したパブリケーションの変更対象となるプロパティを指定します。 @propertysysname で、次の表に示す値のいずれかを指定できます。

[ @value = ] N'value'

対象となるプロパティの新しい値を指定します。 @valuenvarchar(255) で、既定値は NULL です。

は、次の表に示す値のいずれかになります。

次の表では、変更できるパブリケーションのプロパティについて説明し、それらのプロパティの値に関する制限事項について説明します。

プロパティ 説明
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 サブスクライバーではサポートされていません。
both 競合レコードは、パブリッシャーとサブスクライバーの両方に保存されます。
conflict_retention 競合が保持される保持期間を日数で指定する intconflict_retention0 に設定すると、競合のクリーンアップは必要ありません。
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 世代に含まれる変更の数を指定します。 世代とは、パブリッシャーまたはサブスクライバーに配信される変更のコレクションです。
keep_partition_changes true 同期が最適化され、変更されたパーティションに行があるサブスクライバーのみが影響を受けます。 このプロパティを変更するには、新しいスナップショットが必要です。
false 同期は最適化されておらず、サブスクライバーに送信されるパーティションは、パーティション内のデータが変更されたときに検証されます。 このプロパティを変更するには、新しいスナップショットが必要です。
max_concurrent_merge パブリケーションに対して実行できる同時マージ プロセスの最大数を表す int 。 0 の場合、制限はありません。 この数を超えるマージ プロセスが同時に実行されるようにスケジュールされている場合、余分なジョブは currentlmerge プロセスが完了するまでキューに格納されます。
max_concurrent_dynamic_snapshots パラメーター化された行フィルターを使用するマージ パブリケーションに対して同時に実行できる、フィルター処理されたデータ スナップショットを生成するスナップショット セッションの最大数を表す int0場合、制限はありません。 ここで指定した数を超えるスナップショット処理が同時に実行されるようにスケジュールすると、超過したジョブはキューに保存されて、現在実行中のマージ処理が終了するまで待機します。
post_snapshot_script .sql ファイルの場所へのポインターを指定します。 ディストリビューション エージェントまたはマージ エージェントは、最初の同期中に他のすべてのレプリケートされたオブジェクト スクリプトとデータが適用された後に、スナップショット後スクリプトを実行します。 このプロパティを変更するには、新しいスナップショットが必要です。
pre_snapshot_script .sql ファイルの場所へのポインターを指定します。 マージ エージェントは、サブスクライバーでスナップショットを適用するときに、レプリケートされたオブジェクト スクリプトの前にプリスナップショット スクリプトを実行します。 このプロパティを変更するには、新しいスナップショットが必要です。
publication_compatibility_level 100RTM SQL Server 2008 (10.0.x)
90RTM SQL Server 2005 (9.x)
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

注: パーティション グループを使用した後、setupbelongsの使用に戻し、changemergearticleuse_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ビットで、既定値は 0 です。

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

  • 1 は、パブリケーションを変更するとスナップショットが無効になる可能性があることを指定します。 新しいスナップショットを必要とする既存のサブスクリプションがある場合は、既存のスナップショットを古いスナップショットとしてマークし、新しいスナップショットを生成するためのアクセス許可を付与します。

変更時に新しいスナップショットを生成する必要があるプロパティについては、「 Remarks 」セクションを参照してください。

[ @force_reinit_subscription = ] force_reinit_subscription

このストアド プロシージャによって実行されるアクションで、既存のサブスクリプションの再初期化が必要になる可能性があることを確認します。 @force_reinit_subscriptionbit で、既定値は 0 です。

  • 0 は、パブリケーションを変更するときにサブスクリプションを再初期化する必要がないことを指定します。 既存のサブスクリプションを再初期化する必要があることをストアド プロシージャが検出すると、エラーが発生し、変更は行われません。

  • 1 は、パブリケーションに対する変更によって既存のサブスクリプションが再初期化され、サブスクリプションの再初期化が実行されるアクセス許可が付与されることを意味します。

変更時に既存のすべてのサブスクリプションを再初期化する必要があるプロパティについては、「 Remarks 」セクションを参照してください。

リターン コードの値

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 にパブリケーション オブジェクトを一覧表示するには、SQL Server オブジェクトが Active Directory に既に作成されている必要があります。

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

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

アクセス許可

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