sp_changepublication (Transact-SQL)
パブリケーションのプロパティを変更します。 このストアド プロシージャは、パブリッシャー側でパブリケーション データベースについて実行されます。
構文
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 です。次の表に、変更可能なパブリケーションのプロパティと、プロパティの値に関する制限を示します。
プロパティ
値
説明
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 パブリッシャーに対してはサポートされていません。
description
パブリケーションを記述するエントリです。省略可能です。
enabled_for_het_sub
true
パブリケーションで SQL Server 以外のサブスクライバーのサポートを有効にします。 enabled_for_het_sub は、パブリケーションへのサブスクリプションが存在する場合は変更できません。 enabled_for_het_sub を true に設定する前に、次の条件を確認し、必要に応じて sp_changepublication (Transact-SQL) を実行してください。
allow_queued_tran が false であること。
allow_sync_tran が false であること。
enabled_for_het_sub を true に変更すると、既存のパブリケーション設定が変更される場合があります。 詳細については、「SQL Server 以外のサブスクライバー」を参照してください。 このプロパティは、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 が true であること。
repl_freq が continuous であること。
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
スナップショット エージェントを実行するたびに、パブリケーションの同期ファイルが作成または再作成されます。 サブスクリプションの前にスナップショット エージェントが完了していれば、サブスクライバーではサブスクリプションの直後に同期ファイルを取得できます。 新しいサブスクリプションは、最近実行されたスナップショット エージェントによって生成された最新の同期ファイルを取得します。 independent_agent も true であることが必要です。 immediate_sync の詳細については、下記の「解説」を参照してください。
false
新しいサブスクリプションがある場合にのみ、同期ファイルが作成されます。 サブスクリプションの後、スナップショット エージェントが起動して完了するまで、サブスクライバーは同期ファイルを取得できません。
independent_agent
true
パブリケーションに専用のディストリビューション エージェントがあります。
false
パブリケーションでは共有ディストリビューション エージェントが使用されます。パブリケーションおよびサブスクリプション データベースの各ペアには 1 つの共有エージェントがあります。
p2p_continue_onconflict
true
ディストリビューション エージェントは、競合の検出時に変更の処理を続行します。
注意 既定値の FALSE を使用することをお勧めします。 このオプションを TRUE に設定すると、ディストリビューション エージェントは、発信元 ID が最も大きいノードから競合する行を適用してトポロジ内のデータを収束しようとします。 この方法では収束が保証されません。 競合が検出された後に、トポロジに一貫性があることを確認する必要があります。 詳細については、「ピア ツー ピア レプリケーションにおける競合検出」の「競合の処理」を参照してください。
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 Message Queuing (MSMQ) の使用は現在サポートされていません。 value に msmq を指定した場合はエラーが返されます。
repl_freq
continuous
ログ ベースのすべてのトランザクションの出力をパブリッシュします。
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 ステートメントはサブスクライバーにレプリケートしないでください。
retention
サブスクリプション処理の保有期間を時間単位で表した int 型の値です。 保有期間内にサブスクリプションがアクティブ状態でなくなると削除されます。
snapshot_in_defaultfolder
true
スナップショット ファイルは既定のスナップショット フォルダーに格納されます。 alt_snapshot_folder も指定した場合、スナップショット ファイルは既定の場所と代替の場所の両方に格納されます。
false
スナップショット ファイルは alt_snapshot_folder で指定した代替の場所に格納されます。
status
active
パブリケーション データはパブリケーションが作成された直後にサブスクライバーで使用できます。 Oracle パブリッシャーに対してはサポートされていません。
inactive
パブリケーション データはパブリケーションが作成されてもサブスクライバーで使用できません。 Oracle パブリッシャーに対してはサポートされていません。
sync_method
native
サブスクリプションの同期時に、すべてのテーブルのネイティブ モード一括コピー出力を使用します。
character
サブスクリプションの同期時に、すべてのテーブルについてキャラクター モード一括コピー出力を使用します。
concurrent
すべてのテーブルについてネイティブ モード BCP 出力を使用しますが、スナップショット生成処理中にテーブルをロックしません。 スナップショット レプリケーションには無効です。
concurrent_c
すべてのテーブルについてキャラクター モード BCP 出力を使用しますが、スナップショット生成処理中にテーブルをロックしません。 スナップショット レプリケーションには無効です。
taskid
このプロパティは現在サポートされておらず、使用は推奨されません。
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 に設定すると、アーティクルの変更によって既存のサブスクリプションが再初期化されます。この場合、サブスクリプションの再初期化が許可されます。
[ @publisher = ] 'publisher'
SQL Server 以外のパブリッシャーを指定します。 publisher のデータ型は sysname で、既定値は NULL です。注 SQL Server パブリッシャーでアーティクルのプロパティを変更する場合は、publisher は使用しないでください。
リターン コード値
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 でパブリケーション オブジェクトの一覧を表示するには、Active Directory に SQL Server オブジェクトをあらかじめ作成しておく必要があります。
即時同期の影響
即時同期が有効になっていると、サブスクリプションが存在しない場合でも、初期スナップショットが生成された直後に、ログ内のすべての変更が追跡されます。 ログ記録された変更は、顧客がバックアップを使用して新しいピア ノードを追加するときに使用されます。バックアップが復元されると、バックアップの作成後に発生したその他の変更とピアが同期されます。コマンドがディストリビューション データベースで追跡されるため、同期ロジックでは、バックアップが最大保有期間内に作成された場合にコマンドを使用できることを認識しており、バックアップされた最後の LSN を参照してこれを開始位置として使用できます (最小保有期間の既定値は 0 時間、最大保有期間は 24 時間です)。
即時同期が無効の場合、変更は少なくとも最小保有期間で保持され、既にレプリケートされたすべてのトランザクションですぐに削除されます。 即時同期が無効で、既定の保有期間で構成される場合、バックアップの作成後に必要な変更がクリーンアップされたため、新しいピア ノードが正しく初期化されない可能性があります。 残された唯一のオプションがトポロジの停止です。 即時同期を有効に設定すると、柔軟性が向上するため、これは P2P アプリケーションにお勧めの設定です。
使用例
DECLARE @publication AS sysname
SET @publication = N'AdvWorksProductTran'
-- Turn off DDL replication for the transactional publication.
USE [AdventureWorks2012]
EXEC sp_changepublication
@publication = @publication,
@property = N'replicate_ddl',
@value = 0
GO
権限
sp_changepublication を実行できるのは、sysadmin 固定サーバー ロールまたは db_owner 固定データベース ロールのメンバーだけです。
関連項目
参照
sp_addpublication (Transact-SQL)
sp_droppublication (Transact-SQL)
sp_helppublication (Transact-SQL)
レプリケーション ストアド プロシージャ (Transact-SQL)