sys.sp_addpullsubscription (Transact-SQL)

Platí na:SQL ServerAzureSQL Managed Instance

Přidává pull předplatné na snapshot nebo transakční publikaci. Tato uložená procedura se vykonává na předplatiteli v databázi, kde má být pull subscription vytvořena.

Transact-SQL konvence syntaxe

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'publisher'

Název vydavatele. @publisher je sysname bez výchozího nastavení.

Note

Název serveru lze zadat jako <Hostname>,<PortNumber> výchozí instanci nebo <Hostname>\<InstanceName>,<PortNumber> pro pojmenovanou instanci. Zadejte číslo portu pro vaše připojení, když je SQL Server nasazen v Linuxu nebo Windows s vlastním portem a služba prohlížeče je zakázaná. Použití vlastních čísel portů pro vzdáleného distributora platí pro SQL Server 2019 (15.x) a novější verze.

[ @publisher_db = ] N'publisher_db'

Název databáze Publisheru. @publisher_db je sysname, s výchozím nastavením NULL. @publisher_db Oracle Publishers ignorují.

[ @publication = ] N'publikace'

Název publikace. @publication je sysname, bez výchozího nastavení.

[ @independent_agent = ] N'independent_agent'

Specifikuje, zda existuje samostatný Distribution Agent pro tuto publikaci. @independent_agent je nvarchar(5), s výchozím hodnotou true.

  • Pokud true, existuje samostatný Distribution Agent pro tuto publikaci.
  • Pokud false, existuje jeden Distribution Agent pro každou dvojici databáze Publisher/Subscriber databáze.

@independent_agent je vlastností publikace a musí mít stejnou hodnotu jako Publisher.

[ @subscription_type = ] N'subscription_type'

Typ předplatného. @subscription_type je nvarchar(9), s výchozím hodnotou anonymous. Musíte zadat hodnotu pull pro @subscription_type, pokud nechcete vytvořit předplatné bez registrace na Publisher. V tomto případě musíte zadat hodnotu .anonymous To je nutné v případech, kdy nelze během konfigurace předplatného navázat spojení SQL Server s Publisher.

[ @description = ] N'popis"

Popis publikace. @description je nvarchar(100), s výchozím hodnotou NULL.

[ @update_mode = ] N'update_mode'

Typ aktualizace. @update_mode je nvarchar(30) a může mít jednu z následujících hodnot.

Value Description
read only (výchozí) Předplatné je jen pro čtení. Jakékoliv změny na Subscriber nejsou posílány zpět Publisher. Mělo by se používat, když nejsou na odběrateli aktualizovány.
synctran Umožňuje podporu okamžité aktualizace předplatného.
queued tran Umožňuje předplatné pro aktualizace ve frontě. Úpravy dat lze provádět u odběratele, uložit do fronty a následně je předat vydavateli.
failover Umožňuje okamžité aktualizace předplatného s aktualizací ve frontě jako failover. Úpravy dat lze provádět u předplatitele a ihned je předat vydavateli. Pokud nejsou Publisher a Subscriber propojeni, lze úpravy dat provedené u Subscriber uložit do fronty, dokud nejsou Subscriber a Publisher znovu propojeni.
queued failover Poznámka: Oracle Publishers to nepodporuje.

Umožňuje předplatné jako frontové aktualizované předplatné s možností přepnout na režim okamžité aktualizace. Úpravy dat lze provádět u předplatitele a ukládat je do fronty, dokud není navázáno spojení mezi předplatitelem a vydavatelem. Když je navázáno nepřetržité spojení, režim aktualizace lze změnit na okamžité aktualizace.

[ @immediate_sync = ] immediate_sync

Určuje, jestli jsou synchronizační soubory vytvořeny nebo znovu vytvořeny při každém spuštění agenta snímků. @immediate_sync je bit, s výchozím nastavením 1, a musí být nastaven na stejnou hodnotu jako @immediate_sync v sp_addpublication. @immediate_sync je vlastností publikace a musí mít stejnou hodnotu jako Publisher.

Hodnoty návratového kódu

0 (úspěch) nebo 1 (selhání).

Remarks

sp_addpullsubscription se používá při replikaci snapshotů a transakční replikaci.

Important

Pro aktualizace předplatného ve frontě použijte SQL Server Authentication pro připojení k předplatitelům a zadejte pro připojení ke každému předplatiteli jiný účet. Při vytváření pull předplatného podporujícího frontové aktualizace replikace vždy nastaví spojení na Windows Authentication (u pull odběrů replikace nemůže přistupovat k metadatům u odběratele potřebného k použití SQL Server Authentication). V takovém případě byste měli po nastavení předplatného provést sp_changesubscription a změnit připojení tak, aby se používalo SQL Server autentizace.

Pokud tabulka MSreplication_subscriptions u odběratele neexistuje, sp_addpullsubscription vytvoří ji. Přidává také řadu do MSreplication_subscriptions tabulky. Pro pull předplatné by sp_addsubscription měli nejdříve zavolat na Publisher.

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

Pouze členové role pevného serveru správce systému nebo role pevné databáze db_owner mohou vykonávat sp_addpullsubscription.