sp_changepublication (Transact-SQL)

パブリケーションのプロパティを変更します。 このストアド プロシージャは、パブリッシャー側でパブリケーション データベースについて実行されます。

トピック リンク アイコン 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_tranfalse であること。

    • allow_sync_tranfalse であること。

    enabled_for_het_subtrue に変更すると、既存のパブリケーション設定が変更される場合があります。 詳細については、「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_p2ptrue に設定した場合、次の制限が適用されます。

    • allow_anonymousfalse であること。

    • allow_dtsfalse であること。

    • allow_initialize_from_backuptrue であること。

    • allow_queued_tranfalse であること。

    • allow_sync_tranfalse であること。

    • enabled_for_het_subfalse であること。

    • independent_agenttrue であること。

    • repl_freqcontinuous であること。

    • replicate_ddl1 であること。

    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)

概念

パブリケーション プロパティの表示および変更

パブリケーションおよびアーティクルのプロパティの変更