sp_changemergepublication (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 SP1 サブスクライバではサポートされません。
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 [AdventureWorks]
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 固定データベース ロールのメンバだけです。