次の方法で共有


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 であることが必要です。

     

    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 固定データベース ロールのメンバだけです。