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 であることが必要です。
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 オブジェクトをあらかじめ作成しておく必要があります。
使用例
DECLARE @publication AS sysname
SET @publication = N'AdvWorksProductTran'
-- Turn off DDL replication for the transactional publication.
USE [AdventureWorks2008R2]
EXEC sp_changepublication
@publication = @publication,
@property = N'replicate_ddl',
@value = 0
GO
権限
sp_changepublication を実行できるのは、sysadmin 固定サーバー ロールまたは db_owner 固定データベース ロールのメンバだけです。