次の方法で共有


sp_addpullsubscription (Transact-SQL)

スナップショット パブリケーションまたはトランザクション パブリケーションにプル サブスクリプションを追加します。 このストアド プロシージャは、プル サブスクリプションが作成されるデータベース上のサブスクライバー側で実行されます。

トピック リンク アイコン Transact-SQL 構文表記規則

構文

sp_addpullsubscription [ @publisher= ] 'publisher'
    [ , [ @publisher_db= ] 'publisher_db' ]
        , [ @publication= ] 'publication'
    [ , [ @independent_agent= ] 'independent_agent' ]
    [ , [ @subscription_type= ] 'subscription_type' ]
    [ , [ @description= ] 'description' ]
    [ , [ @update_mode= ] 'update_mode' ]
    [ , [ @immediate_sync = ] immediate_sync ]

引数

  • [ @publisher=] 'publisher'
    パブリッシャーの名前です。 publisher のデータ型は sysname で、既定値はありません。

  • [ @publisher_db=] 'publisher_db'
    パブリッシャー データベースの名前です。 publisher_db のデータ型は sysname で、既定値は NULL です。 publisher_db は Oracle パブリッシャーでは無視されます。

  • [ @publication=] 'publication'
    パブリケーションの名前です。 publication のデータ型は sysname で、既定値はありません。

  • [ @independent_agent=] 'independent_agent'
    このパブリケーションに対して、スタンドアロン ディストリビューション エージェントが存在するかどうかを指定します。 independent_agent のデータ型は nvarchar(5) で、既定値は TRUE です。 値が true の場合は、このパブリケーションに対して、単独のディストリビューション エージェントが存在することを示します。 値が false の場合は、パブリッシャー データベースとサブスクライバー データベースの 1 つの組み合わせにつき 1 つのディストリビューション エージェントが存在します。 independent_agent はパブリケーションのプロパティであり、この値に相当するパブリッシャー側の値と同じにする必要があります。

  • [ @subscription_type=] 'subscription_type'
    サブスクリプションの種類を指定します。 subscription_type のデータ型は nvarchar(9) で、既定値は anonymous です。 subscription_type には値 pull を設定する必要があります。ただし、パブリッシャー側でサブスクリプションを登録せずにサブスクリプションを作成する場合は、 値 anonymous を設定します。 これは、サブスクリプションの構成中にパブリッシャーへ SQL Server 接続を確立できない場合に対応するためです。

  • [ @description=] 'description'
    パブリケーションの説明を指定します。 description のデータ型は nvarchar(100) で、既定値は NULL です。

  • [ @update_mode=] 'update_mode'
    更新の種類を指定します。 update_mode のデータ型は nvarchar(30) で、次のいずれかの値を指定できます。

    説明

    read only (既定値)

    サブスクリプションは読み取り専用です。 サブスクライバーで加えられた変更はパブリッシャーには送り返されません。 サブスクライバーで更新を行わない場合に使用します。

    sync tran

    即時更新サブスクリプションのサポートを有効にします。

    queued tran

    サブスクリプションのキュー更新を有効にします。 サブスクライバーでデータを変更し、キューに格納し、それをパブリッシャーに配信することができます。

    failover

    キュー更新をフェールオーバーとするサブスクリプションの即時更新を有効にします。 サブスクライバーでデータを変更し、それを直ちにパブリッシャーに配信することができます。 パブリッシャーとサブスクライバーが接続されていない場合は、サブスクライバーとパブリッシャーが接続されるまで、サブスクライバーで加えられたデータの変更をキューに格納することができます。

    queued failover

    即時更新モードへの変更が可能なキュー更新サブスクリプションとしてサブスクリプションを有効にします。 サブスクライバーでデータを変更し、サブスクライバーとパブリッシャーの間の接続が確立されるまで、その変更をキューに格納することができます。 継続的な接続が確立された場合は、更新モードを即時更新に変更できます。 Oracle パブリッシャーの場合はサポートされません。

  • [ @immediate_sync =] immediate_sync
    スナップショット エージェントを実行するたびに同期ファイルを作成または再作成するかどうかを指定します。 immediate_sync のデータ型は bit で、既定値は 1 です。また、sp_addpublication の immediate_sync と同じ値に設定する必要があります。immediate_sync はパブリケーションのプロパティであり、この値に相当するパブリッシャー側の値と同じにする必要があります。

リターン コード値

0 (成功) または 1 (失敗)

説明

sp_addpullsubscription は、スナップショット レプリケーションおよびトランザクション レプリケーションで使用します。

セキュリティに関する注意セキュリティに関する注意

キュー更新サブスクリプションの場合、サブスクライバーへの接続には SQL Server 認証を使用し、各サブスクライバーへの接続にはそれぞれ異なるアカウントを指定してください。 キュー更新をサポートするプル サブスクリプションを作成する場合は、レプリケーションによって、常に Windows 認証を使用するように接続が設定されます (プル サブスクリプションでは、SQL Server 認証を使用するために必要な、サブスクライバー側のメタデータにレプリケーションからアクセスすることはできません)。 この場合は、サブスクリプションを構成した後に sp_changesubscription を実行して、SQL Server 認証を使用するように接続を変更する必要があります。

MSreplication_subscriptions (Transact-SQL) テーブルがサブスクライバーにない場合は、sp_addpullsubscription によってそのテーブルが作成されます。 MSreplication_subscriptions (Transact-SQL) テーブルの行も追加されます。 プル サブスクリプションの場合、最初にパブリッシャーで sp_addsubscription (Transact-SQL) を呼び出す必要があります。

使用例

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables  
-- on the command line and in SQL Server Management Studio, see the 
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".

-- Execute this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks2012';

-- At the subscription database, create a pull subscription 
-- to a transactional publication.
USE [AdventureWorks2012Replica]
EXEC sp_addpullsubscription 
  @publisher = @publisher, 
  @publication = @publication, 
  @publisher_db = @publicationDB;

-- Add an agent job to synchronize the pull subscription.
EXEC sp_addpullsubscription_agent 
  @publisher = @publisher, 
  @publisher_db = @publicationDB, 
  @publication = @publication, 
  @distributor = @publisher, 
  @job_login = $(Login), 
  @job_password = $(Password);
GO

権限

sp_addpullsubscription を実行できるのは、sysadmin 固定サーバー ロールまたは db_owner 固定データベース ロールのメンバーだけです。

関連項目

参照

sp_addpullsubscription_agent (Transact-SQL)

sp_change_subscription_properties (Transact-SQL)

sp_droppullsubscription (Transact-SQL)

sp_helppullsubscription (Transact-SQL)

sp_helpsubscription_properties (Transact-SQL)

システム ストアド プロシージャ (Transact-SQL)

概念

プル サブスクリプションの作成

トランザクション パブリケーションの更新可能なサブスクリプションの作成

パブリケーションのサブスクライブ