sp_changemergepublication (Transact-SQL)
適用対象: 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'
出版物の名前。 @publication は sysname で、既定値はありません。
[ @property = ] N'property'
指定したパブリケーションの変更対象となるプロパティを指定します。 @property は sysname で、次の表に示す値のいずれかを指定できます。
[ @value = ] N'value'
対象となるプロパティの新しい値を指定します。 @value は nvarchar(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 |
競合が保持される保持期間を日数で指定する 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 | 世代に含まれる変更の数を指定します。 世代とは、パブリッシャーまたはサブスクライバーに配信される変更のコレクションです。 |
keep_partition_changes |
true |
同期が最適化され、変更されたパーティションに行があるサブスクライバーのみが影響を受けます。 このプロパティを変更するには、新しいスナップショットが必要です。 |
false |
同期は最適化されておらず、サブスクライバーに送信されるパーティションは、パーティション内のデータが変更されたときに検証されます。 このプロパティを変更するには、新しいスナップショットが必要です。 | |
max_concurrent_merge |
パブリケーションに対して実行できる同時マージ プロセスの最大数を表す int 。 0 の場合、制限はありません。 この数を超えるマージ プロセスが同時に実行されるようにスケジュールされている場合、余分なジョブは currentlmerge プロセスが完了するまでキューに格納されます。 | |
max_concurrent_dynamic_snapshots |
パラメーター化された行フィルターを使用するマージ パブリケーションに対して同時に実行できる、フィルター処理されたデータ スナップショットを生成するスナップショット セッションの最大数を表す int 。 0 場合、制限はありません。 ここで指定した数を超えるスナップショット処理が同時に実行されるようにスケジュールすると、超過したジョブはキューに保存されて、現在実行中のマージ処理が終了するまで待機します。 |
|
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 の使用に戻し、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 は ビットで、既定値は 0
です。
0
は、パブリケーションを変更してもスナップショットが無効にならないことを指定します。 ストアド プロシージャが変更に新しいスナップショットが必要であることを検出した場合、エラーが発生し、変更は行われません。1
は、パブリケーションを変更するとスナップショットが無効になる可能性があることを指定します。 新しいスナップショットを必要とする既存のサブスクリプションがある場合は、既存のスナップショットを古いスナップショットとしてマークし、新しいスナップショットを生成するためのアクセス許可を付与します。
変更時に新しいスナップショットを生成する必要があるプロパティについては、「 Remarks 」セクションを参照してください。
[ @force_reinit_subscription = ] force_reinit_subscription
このストアド プロシージャによって実行されるアクションで、既存のサブスクリプションの再初期化が必要になる可能性があることを確認します。 @force_reinit_subscription は bit で、既定値は 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
を実行できます。