sp_changepublication (Transact-SQL)
適用対象: SQL Server
Azure SQL Managed Instance
パブリケーションのプロパティを変更します。 このストアド プロシージャは、パブリッシャー側のパブリケーション データベースで実行されます。
構文
sp_changepublication [ [ @publication = ] 'publication' ]
[ , [ @property = ] 'property' ]
[ , [ @value = ] 'value' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @publisher = ] 'publisher' ]
引数
[ @publication = ] 'publication'
パブリケーションの名前を指定します。 publication は sysname で、既定値は NULL です。
[ @property = ] 'property'
変更するパブリケーション プロパティです。 property は nvarchar(255)です。
[ @value = ] 'value'
新しいプロパティ値です。 value は nvarchar(255) で、既定値は NULL です。
次の表に、変更可能なパブリケーションのプロパティと、プロパティの値に関する制限を示します。
プロパティ | Value | 説明 |
---|---|---|
allow_anonymous | true | 特定のパブリケーションに対して匿名サブスクリプションを作成できます。また、 immediate_sync も trueである必要があります。 ピアツーピア パブリケーションでは変更できません。 |
false | 指定されたパブリケーションに対して匿名サブスクリプションを作成することはできません。 ピアツーピア パブリケーションでは変更できません。 | |
allow_initialize_from_backup | true | サブスクライバーでは、初期スナップショットではなくバックアップから、このパブリケーションへのサブスクリプションを初期化できます。 このプロパティは、Microsoft SQL Server 以外のパブリケーションでは変更できません。 |
false | サブスクライバーは、初期スナップショットを使用する必要があります。 SQL Server 以外のパブリケーションでは、このプロパティを変更できません。 | |
allow_partition_switch | true | ALTER TABLE...SWITCH ステートメントは、パブリッシュされたデータベースに対して実行できます。 詳細については、「パーティション テーブルとパーティション インデックスのレプリケート」を参照してください。 |
false | ALTER TABLE...パブリッシュされたデータベースに対して SWITCH ステートメントを実行することはできません。 | |
allow_pull | true | 特定のパブリケーションに対してプル サブスクリプションを使用できます。 SQL Server 以外のパブリケーションでは、このプロパティを変更できません。 |
false | 指定したパブリケーションに対してプル サブスクリプションを許可しません。 SQL Server 以外のパブリケーションでは、このプロパティを変更できません。 | |
allow_push | true | 指定したパブリケーションに対してプッシュ サブスクリプションを許可します。 |
false | 指定したパブリケーションに対してプッシュ サブスクリプションを許可しません。 | |
allow_subscription_copy | true | このパブリケーションをサブスクライブするデータベースをコピーできるようにします。 SQL Server 以外のパブリケーションでは、このプロパティを変更できません。 |
false | このパブリケーションにサブスクライブするデータベースをコピーできないようにします。 SQL Server 以外のパブリケーションでは、このプロパティを変更できません。 | |
alt_snapshot_folder | スナップショットの代替フォルダーの場所。 | |
centralized_conflicts | true | 競合レコードはパブリッシャーに格納されます。 アクティブなサブスクリプションがない場合にのみ変更できます。 SQL Server 以外のパブリケーションでは、このプロパティを変更できません。 |
false | 競合レコードは、競合の原因となったパブリッシャーとサブスクライバーの両方に保存されます。 アクティブなサブスクリプションがない場合にのみ変更できます。 SQL Server 以外のパブリケーションでは、このプロパティを変更できません。 | |
compress_snapshot | true | 代替スナップショット フォルダーにあるスナップショットは .cab ファイル形式に圧縮されます。 既定のスナップショット フォルダー内のスナップショットを圧縮することはできません。 |
false | スナップショットは圧縮されません。これはレプリケーションの既定の動作です。 | |
conflict_policy | pub wins | パブリッシャーが競合で優先される場合に、サブスクライバーの更新で競合を解決する方法です。 このプロパティは、アクティブなサブスクリプションがない場合にのみ変更できます。 Oracle パブリッシャーではサポートされていません。 |
sub reinit | サブスクライバーを更新する場合、競合が発生した場合は、サブスクリプションを再初期化する必要があります。 このプロパティは、アクティブなサブスクリプションがない場合にのみ変更できます。 Oracle パブリッシャーではサポートされていません。 | |
sub wins | サブスクライバーが競合で優先される場合に、サブスクライバーの更新で競合を解決する方法です。 このプロパティは、アクティブなサブスクリプションがない場合にのみ変更できます。 Oracle パブリッシャーではサポートされていません。 | |
conflict_retention | int 競合の保持期間を日数で指定します。 既定のリテンション期間は 14 日間です。 0 は、競合のクリーンアップが不要であることを意味します。 Oracle パブリッシャーではサポートされていません。 | |
説明 | パブリケーションを説明する省略可能なエントリ。 | |
enabled_for_het_sub | true | パブリケーションで SQL Server 以外のサブスクライバーをサポートできるようにします。 パブリケーションのサブスクリプションがある場合、enabled_for_het_sub は変更できません。 enabled_for_het_subを true に設定する前に、Replication ストアド プロシージャ (Transact-SQL) を実行して、次の要件に準拠することが必要になる場合があります。 - allow_queued_tran は falseにする必要があります。 - allow_sync_tran は falseにする必要があります。 enabled_for_het_subを true に変更すると既存のパブリケーション設定が変更される場合があります。 詳細については、「 Non-SQL Server Subscribers」を参照してください。 SQL Server 以外のパブリケーションでは、このプロパティを変更できません。 |
false | パブリケーションでは、SQL Server 以外のサブスクライバーはサポートされていません。 SQL Server 以外のパブリケーションでは、このプロパティを変更できません。 | |
enabled_for_internet | true | パブリケーションはインターネットで有効になっており、ファイル転送プロトコル (FTP) を使用してスナップショット ファイルをサブスクライバーに転送できます。 パブリケーションの同期ファイルはディレクトリ C:\Program Files\Microsoft SQL Server\MSSQL\Repldata\ftp に保存されます。 ftp_address を NULL にすることはできません。 SQL Server 以外のパブリケーションでは、このプロパティを変更できません。 |
false | パブリケーションはインターネットに対応していません。 SQL Server 以外のパブリケーションでは、このプロパティを変更できません。 | |
enabled_for_p2p | true | パブリケーションでは、ピア ツー ピア レプリケーションがサポートされています。 SQL Server 以外のパブリケーションでは、このプロパティを変更できません。 enabled_for_p2pを true に設定するには、次の制限が適用されます。 - allow_anonymous は false にする必要があります - allow_dts は falseである必要があります。 - allow_initialize_from_backup は trueである必要があります - allow_queued_tran は falseにする必要があります。 - allow_sync_tran は falseにする必要があります。 - enabled_for_het_sub は falseにする必要があります。 - independent_agent は 真である必要があります。 - repl_freq は 連続する必要があります。 - replicate_ddl は 1である必要があります。 |
false | パブリケーションでピア ツー ピア レプリケーションがサポートされません。 SQL Server 以外のパブリケーションでは、このプロパティを変更できません。 | |
ftp_address | パブリケーション スナップショット ファイルの FTP アクセス可能な場所。 SQL Server 以外のパブリケーションでは、このプロパティを変更できません。 | |
ftp_login | FTP サービスへの接続に使用するユーザー名です。値 ANONYMOUS は許可されます。 SQL Server 以外のパブリケーションでは、このプロパティを変更できません。 | |
ftp_password | FTP サービスへの接続に使用するユーザー名のパスワード。 SQL Server 以外のパブリケーションでは、このプロパティを変更できません。 | |
ftp_port | ディストリビューター用 FTP サービスのポート番号。 SQL Server 以外のパブリケーションでは、このプロパティを変更できません。 | |
ftp_subdirectory | パブリケーションで FTP を使用したスナップショットの伝達がサポートされている場合に、スナップショット ファイルを作成する場所を指定します。 SQL Server 以外のパブリケーションでは、このプロパティを変更できません。 | |
immediate_sync | true | パブリケーションの同期ファイルは、スナップショット エージェントが実行されるたびに作成または再作成されます。 サブスクリプションがサブスクリプションの前に 1 回完了した場合、サブスクライバーはサブスクリプション スナップショット エージェントの直後に同期ファイルを受信できます。 新しいサブスクリプションは、最近実行されたスナップショット エージェントによって生成された最新の同期ファイルを取得します。 independent_agent も 真である必要があります。 immediate_syncの詳細については、以下の解説を参照してください。 |
false | 同期ファイルは、新しいサブスクリプションがある場合にのみ作成されます。 サブスクライバーは、スナップショット エージェントが開始されて完了するまで、サブスクリプションの後に同期ファイルを受信できません。 | |
independent_agent | true | パブリケーションに専用のディストリビューション エージェントがあります。 |
false | パブリケーションでは共有ディストリビューション エージェントが使用されます。パブリケーションおよびサブスクリプション データベースの各ペアには 1 つの共有エージェントがあります。 | |
p2p_continue_onconflict | true | 競合が検出されると、ディストリビューション エージェントは引き続き変更を処理します。 注意: 既定値の FALSE を使用することをお勧めします。 このオプションを TRUE に設定すると、ディストリビューション エージェントは、最も高い発信元 ID を持つノードから競合する行を適用することで、トポロジ内のデータの収束を試みます。 この方法では、収束は保証されません。 競合が検出された後は、トポロジの整合性を確保する必要があります。 詳細については、「 Conflict Detection in Peer-to-Peer Replication」の「競合の処理」を参照してください。 |
false | 競合が検出されると、ディストリビューション エージェントは変更の処理を停止します。 | |
post_snapshot_script | ディストリビューション エージェントが実行する Transact-SQL スクリプト ファイルの場所を指定します。このファイルは、他のすべてのレプリケートされたオブジェクト スクリプトとデータが初期同期中に適用された後に実行されます。 | |
pre_snapshot_script | ディストリビューション エージェントが実行する Transact-SQL スクリプト ファイルの場所を指定します。その前に、他のすべてのレプリケートされたオブジェクト スクリプトとデータが初期同期中に適用されます。 | |
publish_to_ActiveDirectory | true | このパラメーターは非推奨となり、スクリプトの下位互換性のためにのみサポートされています。 Microsoft Active Directory にパブリケーション情報を追加できなくなりました。 |
false | Active Directory からパブリケーション情報を削除します。 | |
queue_type | sql | SQL Server を使用してトランザクションを格納します。 このプロパティは、アクティブなサブスクリプションがない場合にのみ変更できます。 注: Microsoft メッセージ キューの使用のサポートは廃止されました。 value にmsmqの値を指定するとエラーが発生します。 |
redirected_publisher | 可用性グループ リスナーの名前。 ピアが可用性グループ内にある場合に、ピアツーピア レプリケーションで使用されます。 SQL Server 以外のパブリケーションでは、このプロパティを変更できません。 SQL Server 2019 (15.x) CU 13 で導入されました。 詳細については、「可用性グループの一部として 1 つのピアを構成するまたは可用性グループの両方のピアを構成するを参照してください。 | |
repl_freq | 継続的 | ログ ベースのすべてのトランザクションの出力をパブリッシュします。 |
snapshot (スナップショット) | スケジュールされた同期イベントのみをパブリッシュします。 | |
replicate_ddl | 1 | パブリッシャーで実行されるデータ定義言語 (DDL) ステートメントがレプリケートされます。 SQL Server 以外のパブリケーションでは、このプロパティを変更できません。 |
0 | DDL ステートメントはレプリケートされません。 SQL Server 以外のパブリケーションでは、このプロパティを変更できません。 スキーマ変更のレプリケーションは、ピア ツー ピア レプリケーションを使用する場合は無効にできません。 | |
replicate_partition_switch | true | ALTER TABLE...パブリッシュされたデータベースに対して実行される SWITCH ステートメントは、サブスクライバーにレプリケートする必要があります。 このオプションは、 allow_partition_switch が TRUE に設定されている場合にのみ有効です。 詳細については、「パーティション テーブルとパーティション インデックスのレプリケート」を参照してください。 |
false | ALTER TABLE...SWITCH ステートメントはサブスクライバーにレプリケートしないでください。 | |
保持 | int サブスクリプション アクティビティの保有期間 (時間単位) を表します。 サブスクリプションがリテンション期間内にアクティブでない場合は、削除されます。 | |
snapshot_in_defaultfolder | true | スナップショット ファイルは、既定のスナップショット フォルダーに格納されます。 alt_snapshot_folderも指定されている場合、スナップショット ファイルは既定の場所と代替の場所の両方に格納されます。 |
false | スナップショット ファイルは、 alt_snapshot_folderで指定された別の場所に格納されます。 | |
status | active | パブリケーション データはパブリケーションが作成された直後にサブスクライバーで使用できます。 Oracle パブリッシャーではサポートされていません。 |
inactive | パブリケーションの作成時にサブスクライバーはパブリケーション データを使用できません。 Oracle パブリッシャーではサポートされていません。 | |
sync_method | native | サブスクリプションの同期時に、すべてのテーブルのネイティブ モード一括コピー出力を使用します。 |
character | サブスクリプションを同期するときに、すべてのテーブルの文字モードの一括コピー出力を使用します。 | |
同時 | すべてのテーブルについてネイティブ モード BCP 出力を使用しますが、スナップショット生成処理中にテーブルをロックしません。 スナップショット レプリケーションでは無効です。 | |
concurrent_c | すべてのテーブルについてキャラクター モード BCP 出力を使用しますが、スナップショット生成処理中にテーブルをロックしません。 スナップショット レプリケーションでは無効です。 | |
taskid | このプロパティは非推奨となり、サポートされなくなりました。 | |
allow_drop | true | トランザクション レプリケーション DROP TABLE 一部であるアーティクルの DLL サポートを有効にします。 サポートされている最小バージョン: SQL Server 2014 (12.x) Service Pack 2 以降と SQL Server 2016 (13.x) Service Pack 1 以降。 その他のリファレンス: KB 3170123 |
false | トランザクション レプリケーション DROP TABLE 一部であるアーティクルの DLL サポートを無効にします。 これは、このプロパティの default 値です。 |
|
NULL (既定値) | property でサポートされている値の一覧を返します。 |
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
このストアド プロシージャによって実行されたアクションによって、既存のスナップショットが無効になる可能性があることを確認します。 force_invalidate_snapshot は ビットで、既定値は 0 です。
- 0 は、アーティクルに対する変更によってスナップショットが無効にならないことを指定します。 ストアド プロシージャが変更に新しいスナップショットが必要であることを検出した場合、エラーが発生し、変更は行われません。
- 1 アーティクルの変更によってスナップショットが無効になる可能性があることを指定します。 新しいスナップショットを必要とする既存のサブスクリプションがある場合、この値は、既存のスナップショットが古いスナップショットとしてマークされ、新しいスナップショットが生成される権限を与えます。
変更時に新しいスナップショットの生成が必要なプロパティについては、「解説」セクションを参照してください。
[@force_reinit_subscription = ] force_reinit_subscription
このストアド プロシージャによって実行されるアクションで、既存のサブスクリプションの再初期化が必要になる可能性があることを確認します。 force_reinit_subscription は ビットであり 既定値は 0 です。
- 0 は、アーティクルの変更によってサブスクリプションが再初期化されないように指定します。 変更によって既存のサブスクリプションの再初期化が必要であることがストアド プロシージャによって検出された場合、エラーが発生し、変更は行われません。
- 1 アーティクルに変更を加えて既存のサブスクリプションを再初期化し、サブスクリプションの再初期化を行う権限を付与することを指定します。
[ @publisher = ] 'publisher'
SQL Server 以外のパブリッシャーを指定します。 publisher は sysname で、既定値は NULL です。
Note
パブリッシャー は、SQL Server パブリッシャーのアーティクルのプロパティを変更するときに使用しないでください。
リターン コードの値
0 (成功) または 1 (失敗)
解説
sp_changepublication は、スナップショット レプリケーションとトランザクション レプリケーションで使用されます。
次のいずれかのプロパティを変更した後、新しいスナップショットを生成し、force_invalidate_snapshot パラメーターに値 1 を指定する必要があります。
- alt_snapshot_folder
- compress_snapshot
- enabled_for_het_sub
- ftp_address
- ftp_login
- ftp_password
- ftp_port
- ftp_subdirectory
- post_snapshot_script
- pre_snapshot_script
- snapshot_in_defaultfolder
- sync_mode
publish_to_active_directory パラメーターを使用して Active Directory 内のパブリケーション オブジェクトを一覧表示するには、SQL Server オブジェクトが Active Directory に既に作成されている必要があります。
即時同期の影響
即時同期がオンの場合、サブスクリプションがない場合でも、初期スナップショットが生成された直後にログ内のすべての変更が追跡されます。 ログに記録された変更は、顧客がバックアップを使用して新しいピア ノードを追加するときに使用されます。 バックアップが復元されると、バックアップの作成後に発生したその他の変更とピアが同期されます。 コマンドはディストリビューション データベースで追跡されるため、同期ロジックは最後にバックアップされた LSN を確認し、これを開始点として使用できます。これは、バックアップが最大リテンション期間内に実行された場合にコマンドが使用可能であることを認識します。 (最小保有期間の既定値は 0 時間で、最大保有期間は 24 時間です)。
即時同期がオフの場合、変更は少なくとも最小保有期間を保持し、既にレプリケートされているすべてのトランザクションに対してすぐにクリーンアップされます。 即時同期が無効で、既定の保有期間で構成される場合、バックアップの作成後に必要な変更がクリーンアップされたため、新しいピア ノードが正しく初期化されない可能性があります。 残された唯一のオプションがトポロジの停止です。 即時同期を有効に設定すると、柔軟性が向上するため、これは P2P アプリケーションにお勧めの設定です。
例
DECLARE @publication AS sysname
SET @publication = N'AdvWorksProductTran'
-- Turn off DDL replication for the transactional publication.
USE [AdventureWorks2022]
EXEC sp_changepublication
@publication = @publication,
@property = N'replicate_ddl',
@value = 0
GO
アクセス許可
sysadmin固定サーバー ロールまたは固定データベース ロールdb_ownerのメンバーのみが、sp_changepublicationを実行できます。
参照
パブリケーション プロパティの表示および変更
パブリケーションおよびアーティクルのプロパティの変更
sp_addpublication (Transact-SQL)
sp_droppublication (Transact-SQL)
sp_helppublication (Transact-SQL)
レプリケーション ストアド プロシージャ (Transact-SQL)
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示