sys.sp_addpullsubscription (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL Managed Instance

Voegt een pull-abonnement toe aan een snapshot of transactionele publicatie. Deze opgeslagen procedure wordt uitgevoerd bij de abonnee op de database waar het pull-abonnement wordt aangemaakt.

Transact-SQL syntaxis-conventies

Syntax

sys.sp_addpullsubscription
    [ @publisher = ] N'publisher'
    [ , [ @publisher_db = ] N'publisher_db' ]
    , [ @publication = ] N'publication'
    [ , [ @independent_agent = ] N'independent_agent' ]
    [ , [ @subscription_type = ] N'subscription_type' ]
    [ , [ @description = ] N'description' ]
    [ , [ @update_mode = ] N'update_mode' ]
    [ , [ @immediate_sync = ] immediate_sync ]
[ ; ]

Arguments

[ @publisher = ] N'uitgever'

De naam van de uitgever. @publisher is sysname, zonder standaardinstelling.

Note

De servernaam kan worden opgegeven als <Hostname>,<PortNumber> voor een standaardexemplaren of <Hostname>\<InstanceName>,<PortNumber> voor een benoemd exemplaar. Geef het poortnummer voor uw verbinding op wanneer SQL Server is geïmplementeerd in Linux of Windows met een aangepaste poort en de browserservice is uitgeschakeld. Het gebruik van aangepaste poortnummers voor externe distributeur is van toepassing op SQL Server 2019 (15.x) en latere versies.

[ @publisher_db = ] N'publisher_db'

De naam van de Publisher-database. @publisher_db is een systeemnaam, met als standaard NULL. @publisher_db wordt genegeerd door Oracle Publishers.

[ @publication = ] N'publicatie'

De naam van de publicatie. @publication is sysname, zonder standaard.

[ @independent_agent = ] N'independent_agent'

Geeft aan of er een zelfstandige Distribution Agent voor deze publicatie is. @independent_agent is nvarchar(5), met als standaard .true

  • Als true, is er een zelfstandige Distribution Agent voor deze publicatie.
  • Als false, is er één Distribution Agent voor elk Publisher-database/Subscriber database-paar.

@independent_agent is een eigendom van de publicatie en moet dezelfde waarde hebben als de Publisher.

[ @subscription_type = ] N'subscription_type'

Het soort abonnement. @subscription_type is nvarchar(9), met een standaard van anonymous. Je moet een waarde van pull voor @subscription_type specificeren, tenzij je een abonnement wilt aanmaken zonder het abonnement op de Publisher te registreren. In dit geval moet je een waarde van anonymousspecificeren. Dit is noodzakelijk in gevallen waarin je tijdens het abonnement geen SQL Server-verbinding met de Publisher kunt opzetten.

[ @description = ] Beschrijving van'

De beschrijving van de publicatie. @description is nvarchar(100), met een standaard van NULL.

[ @update_mode = ] N'update_mode'

Het type update. @update_mode is nvarchar(30) en kan een van de volgende waarden zijn.

Value Description
read only (standaard) Het abonnement heeft het kenmerk Alleen-lezen. Wijzigingen bij de Subscriber worden niet teruggestuurd naar de Publisher. Moet worden gebruikt wanneer er geen updates worden gedaan bij de abonnee.
synctran Ondersteunt het direct updaten van abonnementen.
queued tran Maakt het abonnement mogelijk voor updates in de wachtrij. Datawijzigingen kunnen bij de abonnee worden gedaan, in een wachtrij worden opgeslagen en vervolgens naar de uitgever worden doorgegeven.
failover Maakt het abonnement mogelijk voor onmiddellijke updates met wachtrij-updates als failover. Datawijzigingen kunnen bij de abonnee worden aangebracht en direct aan de uitgever worden doorgegeven. Als de Publisher en Subscriber niet verbonden zijn, kunnen gegevenswijzigingen die bij de Subscriber zijn aangebracht in een wachtrij worden opgeslagen totdat Subscriber en Publisher weer verbonden zijn.
queued failover Opmerking: Niet ondersteund door Oracle Publishers.

Maakt het abonnement mogelijk als een gequeued update-abonnement met de mogelijkheid om over te schakelen naar onmiddellijke updatemodus. Datawijzigingen kunnen bij de abonnee worden uitgevoerd en in een wachtrij worden opgeslagen totdat er een verbinding is gelegd tussen de abonnee en de uitgever. Wanneer een continue verbinding tot stand is gekomen, kan de updatemodus worden omgezet naar onmiddellijke update.

[ @immediate_sync = ] immediate_sync

Hiermee geeft u op of de synchronisatiebestanden worden gemaakt of opnieuw worden gemaakt telkens wanneer de momentopnameagent wordt uitgevoerd. @immediate_sync is bit, met een standaard van 1, en moet worden ingesteld op dezelfde waarde als @immediate_sync in sp_addpublication. @immediate_sync is een eigendom van de publicatie en moet dezelfde waarde hebben als de Publisher.

Codewaarden retourneren

0 (geslaagd) of 1 (mislukt).

Remarks

sp_addpullsubscription wordt gebruikt bij snapshotreplicatie en transactionele replicatie.

Important

Voor in de wachtrij bijgewerkte abonnementen gebruik je SQL Server Authentication voor verbindingen met abonnees en geef je een ander account op voor de verbinding met elke abonnee. Bij het aanmaken van een pull-abonnement dat wachtrij-updates ondersteunt, stelt replicatie altijd de verbinding in om Windows-authenticatie te gebruiken (voor pull-abonnementen kan replicatie geen toegang krijgen tot metadata bij de abonnee die nodig is voor SQL Server-authenticatie). In dat geval moet je sp_changesubscription uitvoeren om de verbinding te wijzigen naar SQL Server Authentication nadat het abonnement is geconfigureerd.

Als de MSreplication_subscriptions-tabel niet bestaat bij de Abonnee, sp_addpullsubscription maakt hij deze aan. Het voegt ook een rij toe aan de MSreplication_subscriptions tabel. Voor pull-abonnementen moet sp_addsubscription eerst op de Publisher worden aangeroepen.

Examples

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

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

Permissions

Alleen leden van de sysadmin-vaste serverrol of db_owner vaste databaserol kunnen uitvoeren sp_addpullsubscription.