Condividi tramite


sp_addpullsubscription (Transact-SQL)

Aggiunge una sottoscrizione pull a una pubblicazione snapshot o transazionale. Questa stored procedure viene eseguita nel Sottoscrittore nel database in cui deve essere creata la sottoscrizione pull.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

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 ]

Argomenti

  • [ @publisher=] 'publisher'
    Nome del server di pubblicazione. publisher è di tipo sysname e non prevede alcun valore predefinito.

  • [ @publisher_db=] 'publisher_db'
    Nome del database del server di pubblicazione. publisher_db è di tipo sysname e il valore predefinito è NULL. Il parametro publisher_db viene ignorato dai server di pubblicazione Oracle.

  • [ @publication=] 'publication'
    Nome della pubblicazione. publication è di tipo sysname e non prevede alcun valore predefinito.

  • [ @independent_agent=] 'independent_agent'
    Specifica se per la pubblicazione è disponibile un agente di distribuzione autonomo. independent_agent è di tipo nvarchar(5) e il valore predefinito è TRUE. Se true, per la pubblicazione è disponibile un agente di distribuzione autonomo. Se false, per ogni coppia di database del server di pubblicazione/database del Sottoscrittore è disponibile un agente di distribuzione. independent_agent è una proprietà della pubblicazione il cui valore deve corrispondere al valore della proprietà nel server di pubblicazione.

  • [ @subscription_type=] 'subscription_type'
    Tipo di sottoscrizione. subscription_type è di tipo nvarchar(9) e il valore predefinito è anonymous. Per subscription_type è necessario specificare il valore pull, a meno che non si desideri creare una sottoscrizione senza eseguirne la registrazione nel server di pubblicazione. In questo caso, si deve specificare il valore anonymous. Ciò è necessario in casi in cui non è possibile stabilire una connessione SQL Server al server di pubblicazione durante la configurazione della sottoscrizione.

  • [ @description=] 'description'
    Descrizione della pubblicazione. description è di tipo nvarchar(100) e il valore predefinito è NULL.

  • [ @update_mode=] 'update_mode'
    Tipo di aggiornamnto. update_mode è di tipo nvarchar(30). I possibili valori sono i seguenti.

    Valore

    Descrizione

    read only (predefinito)

    La sottoscrizione è di sola lettura. Le modifiche apportate nel Sottoscrittore non vengono ritrasmesse al server di pubblicazione. È consigliabile utilizzare questo valore quando non sono previsti aggiornamenti nel Sottoscrittore.

    synctran

    Attiva il supporto per le sottoscrizioni ad aggiornamento immediato.

    queued tran

    Abilita la sottoscrizione per l'aggiornamento in coda. Le modifiche dei dati possono essere eseguite nel Sottoscrittore, archiviate in una coda e quindi propagate al server di pubblicazione.

    failover

    Abilita la sottoscrizione per l'aggiornamento immediato con l'aggiornamento in coda come soluzione di failover. Le modifiche dei dati possono essere eseguite nel Sottoscrittore e propagate immediatamente al server di pubblicazione. Se il server di pubblicazione e il Sottoscrittore non sono connessi, le modifiche apportate ai dati nel Sottoscrittore possono essere archiviate in una coda fino al ripristino della connessione tra il Sottoscrittore e il server di pubblicazione.

    queued failover

    Abilita la sottoscrizione per l'aggiornamento in coda con la possibilità di passare alla modalità di aggiornamento immediato. Le modifiche dei dati possono essere eseguite nel Sottoscrittore e archiviate in una coda fino a quando non viene stabilita una connessione tra il Sottoscrittore e il server di pubblicazione. Una volta stabilita una connessione continua, è possibile passare alla modalità di aggiornamento immediato. Valore non supportato per i server di pubblicazione Oracle.

  • [ @immediate_sync =] immediate_sync
    Indica se i file di sincronizzazione vengono creati o ricreati a ogni esecuzione dell'agente snapshot. immediate_sync è di tipo bit e il valore predefinito è 1. Deve essere impostato sullo stesso valore di immediate_sync in sp_addpublication. immediate_sync è una proprietà della pubblicazione il cui valore deve corrispondere al valore della proprietà nel server di pubblicazione.

Valori restituiti

0 (esito positivo) o 1 (esito negativo)

Osservazioni

La stored procedure sp_addpullsubscription viene utilizzata per la replica snapshot e transazionale.

Nota sulla protezioneNota sulla protezione

Per le sottoscrizioni ad aggiornamento in coda utilizzare l'autenticazione di SQL Server per le connessioni ai Sottoscrittori e specificare un account diverso per la connessione a ogni Sottoscrittore. Quando si crea una sottoscrizione pull che supporta l'aggiornamento in coda, la replica imposta sempre la connessione per l'utilizzo dell'autenticazione di Windows. Per le sottoscrizioni pull, il sistema di replica non è in grado di accedere ai metadati nel Sottoscrittore necessari per l'utilizzo dell'autenticazione di SQL Server. In questo caso, è necessario eseguire sp_changesubscription per impostare la connessione per l'utilizzo dell'autenticazione di SQL Server dopo aver configurato la sottoscrizione.

Se la tabella MSreplication_subscriptions (Transact-SQL) non esiste nel Sottoscrittore, tale tabella viene creata dalla stored procedure sp_addpullsubscription che aggiunge inoltre una riga alla tabella MSreplication_subscriptions (Transact-SQL). Per le sottoscrizioni pull, è necessario chiamare sp_addsubscription (Transact-SQL) prima nel server di pubblicazione.

Esempio

-- 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'AdventureWorks';

-- At the subscription database, create a pull subscription 
-- to a transactional publication.
USE [AdventureWorksReplica]
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

Autorizzazioni

Solo i membri del ruolo predefinito del server sysadmin o del ruolo predefinito del database db_owner possono eseguire sp_addpullsubscription.