sys.sp_addpullsubscription_agent (Transact-SQL)

Platí na:SQL ServerAzureSQL Managed Instance

Přidává novou úlohu plánovaného agenta, která slouží k synchronizaci pull předplatného s transakční publikací. Tato uložená procedura se vykonává u předplatitele v databázi předplatného.

Transact-SQL konvence syntaxe

Syntax

sys.sp_addpullsubscription_agent
    [ @publisher = ] N'publisher'
    [ , [ @publisher_db = ] N'publisher_db' ]
    , [ @publication = ] N'publication'
    [ , [ @subscriber = ] N'subscriber' ]
    [ , [ @subscriber_db = ] N'subscriber_db' ]
    [ , [ @subscriber_security_mode = ] subscriber_security_mode ]
    [ , [ @subscriber_login = ] N'subscriber_login' ]
    [ , [ @subscriber_password = ] N'subscriber_password' ]
    [ , [ @distributor = ] N'distributor' ]
    [ , [ @distribution_db = ] N'distribution_db' ]
    [ , [ @distributor_security_mode = ] distributor_security_mode ]
    [ , [ @distributor_login = ] N'distributor_login' ]
    [ , [ @distributor_password = ] N'distributor_password' ]
    [ , [ @optional_command_line = ] N'optional_command_line' ]
    [ , [ @frequency_type = ] frequency_type ]
    [ , [ @frequency_interval = ] frequency_interval ]
    [ , [ @frequency_relative_interval = ] frequency_relative_interval ]
    [ , [ @frequency_recurrence_factor = ] frequency_recurrence_factor ]
    [ , [ @frequency_subday = ] frequency_subday ]
    [ , [ @frequency_subday_interval = ] frequency_subday_interval ]
    [ , [ @active_start_time_of_day = ] active_start_time_of_day ]
    [ , [ @active_end_time_of_day = ] active_end_time_of_day ]
    [ , [ @active_start_date = ] active_start_date ]
    [ , [ @active_end_date = ] active_end_date ]
    [ , [ @distribution_jobid = ] distribution_jobid OUTPUT ]
    [ , [ @encrypted_distributor_password = ] encrypted_distributor_password ]
    [ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
    [ , [ @ftp_address = ] N'ftp_address' ]
    [ , [ @ftp_port = ] ftp_port ]
    [ , [ @ftp_login = ] N'ftp_login' ]
    [ , [ @ftp_password = ] N'ftp_password' ]
    [ , [ @alt_snapshot_folder = ] N'alt_snapshot_folder' ]
    [ , [ @working_directory = ] N'working_directory' ]
    [ , [ @use_ftp = ] N'use_ftp' ]
    [ , [ @publication_type = ] publication_type ]
    [ , [ @dts_package_name = ] N'dts_package_name' ]
    [ , [ @dts_package_password = ] N'dts_package_password' ]
    [ , [ @dts_package_location = ] N'dts_package_location' ]
    [ , [ @reserved = ] N'reserved' ]
    [ , [ @offloadagent = ] N'offloadagent' ]
    [ , [ @offloadserver = ] N'offloadserver' ]
    [ , [ @job_name = ] N'job_name' ]
    [ , [ @job_login = ] N'job_login' ]
    [ , [ @job_password = ] N'job_password' ]
    [ , [ @job_security_mode = ] job_security_mode ]
[ ; ]

Arguments

[ @publisher = ] N'vydavatele'

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

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

[ @subscriber = ] N'subscriber'

Název instance Subscriber instance nebo jméno AG posluchače, pokud je databáze odběratelů ve skupině dostupnosti. @subscriber je sysname s výchozím nastavením NULL.

Note

Tento parametr je zastaralý a je zachován kvůli zpětné kompatibilitě skriptů.

Při spuštění sp_addpullsubscription_agent pro odběratele, který je součástí AG, nastavte @subscriber na jméno posluchače AG. Pokud spustíte SQL Server verzí 2016 (13.x) a starších, nebo SQL Server 2017 (14.x) před CU 16, uložená procedura se spustí bez vrácení chyby, ale parametr @subscriber na replikaci Distribution Agent neodkazuje na jméno posluchače AG; parametr je vytvořen s názvem serveru předplatitele, na kterém je příkaz vykonán. Pro vyřešení tohoto problému ručně aktualizujte parametr Distribution Agent job@subscriber s hodnotou jména posluchače AG.

[ @subscriber_db = ] N'subscriber_db'

Název databáze předplatného. @subscriber_db je sysname s výchozím nastavením NULL.

Note

Tento parametr je zastaralý a je zachován kvůli zpětné kompatibilitě skriptů.

[ @subscriber_security_mode = ] subscriber_security_mode

Bezpečnostní režim je vhodné použít při připojení k předplatiteli při synchronizaci. @subscriber_security_mode je int, s výchozím nastavením NULL.

  • 0 specifikuje autentizaci SQL Server
  • 1 specifikuje autentizaci Windows

Note

Tento parametr je zastaralý a je zachován kvůli zpětné kompatibilitě skriptů. Distribution Agent se vždy připojuje k místnímu předplatiteli pomocí Windows Authentication. Pokud je pro tento parametr zadána jiná hodnota než NULL nebo , 1 zobrazí se varovná zpráva.

[ @subscriber_login = ] N'subscriber_login'

Přihlášení předplatitele pro použití při připojení k předplatiteli při synchronizaci. @subscriber_login je sysname s výchozím nastavením .NULL

Note

Tento parametr je zastaralý a je zachován kvůli zpětné kompatibilitě skriptů. Pokud je pro tento parametr zadána hodnota, zobrazí se varovná zpráva, ale tato hodnota je ignorována.

[ @subscriber_password = ] N'subscriber_password'

Heslo odběratele. @subscriber_password je vyžadováno, pokud je @subscriber_security_mode nastaveno na 0. @subscriber_password je sysname s výchozím nastavením NULL. Pokud je použito heslo předplatitele, automaticky se zašifruje.

Note

Tento parametr je zastaralý a je zachován kvůli zpětné kompatibilitě skriptů. Pokud je pro tento parametr zadána hodnota, zobrazí se varovná zpráva, ale tato hodnota je ignorována.

[ @distributor = ] N'distributor'

Jméno distributora. @distributor je sysname, s výchozí hodnotou určenou @publisher.

[ @distribution_db = ] N'distribution_db'

Název distribuční databáze. @distribution_db je sysname, s výchozím nastavením NULL.

[ @distributor_security_mode = ] distributor_security_mode

Note

Microsoft Entra ID se dříve označovala jako Azure Active Directory (Azure AD).

Bezpečnostní režim pro použití při připojení k distributoru při synchronizaci. @distributor_security_mode je int, s výchozím nastavením 1. Následující hodnoty definují bezpečnostní režim:

  • 0 specifikuje autentizaci SQL Serveru.
  • 1 specifikuje autentizaci Windows.
  • 2specifikuje ověření heslem Microsoft Entra počínaje SQL Server 2022 (16.x) CU 6.
  • 3specifikuje integrovanou autentizaci Microsoft Entra počínaje SQL Server 2022 (16.x) CU 6.
  • 4specifikuje autentizaci Microsoft Entra token počínaje SQL Server 2022 (16.x) CU 6.

Important

Pokud je to možné, použijte ověřování systému Windows.

[ @distributor_login = ] N'distributor_login'

Přihlášení distributora pro použití při připojení k distributoru při synchronizaci. @distributor_login je sysname, s výchozím nastavením NULL. @distributor_login je vyžadováno, pokud je @distributor_security_mode nastaveno na 0.

[ @distributor_password = ] N'distributor_password'

Heslo distributora. @distributor_password je vyžadováno, pokud je @distributor_security_mode nastaveno na 0. @distributor_password je sysname s výchozím nastavením NULL.

Important

Nepoužívejte prázdné heslo. Použijte silné heslo. Pokud je to možné, vyzve uživatele, aby za běhu zadali přihlašovací údaje zabezpečení. Pokud musíte přihlašovací údaje uložit do souboru skriptu, musíte ho zabezpečit, abyste zabránili neoprávněnému přístupu.

[ @optional_command_line = ] N'optional_command_line'

Volitelný příkazový řádek poskytovaný Distribution Agent. Například -DefinitionFile C:\Distdef.txt nebo -CommitBatchSize 10. @optional_command_line je nvarchar(4000), s výchozím prázdným řetězcem.

[ @frequency_type = ] frequency_type

Frekvence, s jakou plánovat Distribution Agent. @frequency_type je int a může mít jednu z následujících hodnot.

Value Description
1 Jednorázový
2 (výchozí) Na vyžádání
4 Každý den
8 Týdně
16 Monthly
32 Měsíční relativní
64 Automatický start
128 Opakovaná platba

Note

Zadání hodnoty způsobí64, že Distribution Agent běží v kontinuálním režimu. To odpovídá nastavení parametru -Continuous pro agenta. Další informace naleznete v části Agent distribuce replikace.

[ @frequency_interval = ] frequency_interval

Hodnota se vztahuje na frekvenci nastavenou @frequency_type. @frequency_interval je int, s výchozím nastavením 1.

[ @frequency_relative_interval = ] frequency_relative_interval

Datum distribučního agenta. Tento parametr se používá, když je @frequency_type nastaveno na 32 (měsíční relativní). @frequency_relative_interval je int a může mít jednu z následujících hodnot.

Value Description
1 (výchozí) First
2 Second
4 Třetí
8 Čtvrtý
16 Poslední

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

Faktor opakování používaný @frequency_type. @frequency_recurrence_factor je int, s výchozím hodnotou 1.

[ @frequency_subday = ] frequency_subday

Určuje, jak často se má přeplánovat během definovaného období. @frequency_subday je int a může být jednou z následujících hodnot.

Value Description
1 (výchozí) Jednou
2 Second
4 Minuta
8 Hodina

[ @frequency_subday_interval = ] frequency_subday_interval

Přestávka na @frequency_subday. @frequency_subday_interval je int, s výchozím nastavením 1.

[ @active_start_time_of_day = ] active_start_time_of_day

Denní doba, kdy je distribuční agent poprvé naplánován, formátovaná jako HHmmss. @active_start_time_of_day je int, s výchozím nastavením 0.

[ @active_end_time_of_day = ] active_end_time_of_day

Denní doba, kdy distribuční agent přestává být plánován, formátovaná jako HHmmss. @active_end_time_of_day je , s výchozím nastavením 0.

@active_start_date [ = ] active_start_date

Datum, kdy je distribuční agent poprvé naplánován, formátováno jako yyyyMMdd. @active_start_date je int, s výchozím nastavením 0.

@active_end_date [ = ] active_end_date

Datum, kdy distribuční agent přestane být plánován, formátováno jako yyyyMMdd. @active_end_date je int, s výchozím nastavením 0.

[ @distribution_jobid = ] distribution_jobid VÝSTUP

ID Distribution Agent pro tuto práci. @distribution_jobid je OUTPUT parametr typu binární(16), s výchozím hodnotou NULL.

[ @encrypted_distributor_password = ] encrypted_distributor_password

@encrypted_distributor_password je bit, s výchozím nastavením 0.

Note

Nastavení @encrypted_distributor_password již není podporováno. Pokus nastavit tento bitový parametr na 1 povede k chybě.

[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'

Specifikuje, zda lze předplatné synchronizovat pomocí Microsoft Synchronization Manager. @enabled_for_syncmgr je nvarchar(5), s výchozím hodnotou false.

  • Pokud false, předplatné není registrováno v Synchronization Manager.
  • Pokud true, předplatné je registrováno v Synchronization Manager a lze ho synchronizovat bez nutnosti spouštět SQL Server Management Studio.

[ @ftp_address = ] N'ftp_address'

Tento parametr je zastaralý a je zachován kvůli zpětné kompatibilitě skriptů.

[ @ftp_port = ] ftp_port

Tento parametr je zastaralý a je zachován kvůli zpětné kompatibilitě skriptů.

[ @ftp_login = ] N'ftp_login'

Tento parametr je zastaralý a je zachován kvůli zpětné kompatibilitě skriptů.

[ @ftp_password = ] N'ftp_password'

Tento parametr je zastaralý a je zachován kvůli zpětné kompatibilitě skriptů.

[ @alt_snapshot_folder = ] N'alt_snapshot_folder'

Určuje umístění alternativní složky snímku. @alt_snapshot_folder je nvarchar(255), s výchozím hodnotou NULL.

[ @working_directory = ] N'working_directory'

Název pracovního adresáře použitého k ukládání dat a souborů schématu publikace. @working_directory je nvarchar(255), s výchozím hodnotou NULL. Název by měl být zadán ve formátu UNC.

[ @use_ftp = ] N'use_ftp'

Specifikuje použití FTP místo běžného protokolu pro získávání snímků. @use_ftp je nvarchar(5), s výchozím hodnotou false.

[ @publication_type = ] publication_type

Specifikuje typ replikace publikace. @publication_type je tinyint, s výchozím hodnotou 0.

  • Pokud 0, publikace je typ transakce.
  • Pokud 1, publikace je typ snapshotu.
  • Pokud 2, publikace je typ sloučení.

[ @dts_package_name = ] N'dts_package_name'

Specifikuje název DTS balíčku. @dts_package_name je sysname s výchozím nastavením NULL. Například pro specifikaci balíčku , DTSPub_Packageparametrem by byl @dts_package_name = N'DTSPub_Package'.

[ @dts_package_password = ] N'dts_package_password'

Specifikuje heslo na balení, pokud nějaké je. @dts_package_password je sysname, s výchozím nastavením NULL, což znamená, že na balíčku není heslo.

Note

Pokud je uvedeno , musíte zadat heslo@dts_package_name je uvedeno.

[ @dts_package_location = ] N'dts_package_location'

Specifikuje umístění balíčku. @dts_package_location je nvarchar(12), s výchozím hodnotou subscriber. Umístění balíčku může být distributor nebo subscriber.

[ @reserved = ] N'reserved'

Určeno pouze pro informační účely. Není podporováno. Budoucí kompatibilita není zaručena.

[ @offloadagent = ] N'offloadagent'

Tento parametr je zastaralý a je zachován kvůli zpětné kompatibilitě skriptů. Pokud je pro tento parametr zadána hodnota, zobrazí se varovná zpráva, ale tato hodnota je ignorována. Nastavení @offloadagent na jinou hodnotu než false generuje chybu.

[ @offloadserver = ] N'offloadserver

Tento parametr je zastaralý a je zachován kvůli zpětné kompatibilitě skriptů. Pokud je pro tento parametr zadána hodnota, zobrazí se varovná zpráva, ale tato hodnota je ignorována. Nastavení @offloadserver na jinou hodnotu generuje false chybu.

[ @job_name = ] N'job_name'

Název stávající pozice agenta. @job_name je sysname s výchozím nastavením NULL. Tento parametr je specifikován pouze tehdy, když je předplatné synchronizováno s existující úlohou místo nově vytvořené úlohy (výchozí). Pokud nejste členem role pevného správce systému, musíte při určování @job_name specifikovat @job_login a @job_password.

[ @job_login = ] N'job_login'

Přihlášení k účtu Windows, pod kterým agent běží. @job_login je nvarchar(257), bez výchozího nastavení. Tento Windows účet se vždy používá pro připojení agentů k předplatiteli.

[ @job_password = ] N'job_password'

Heslo k Windows účtu, pod kterým agent běží. @job_password je sysname bez výchozího nastavení.

Important

Nepoužívejte prázdné heslo. Použijte silné heslo. Pokud je to možné, vyzve uživatele, aby za běhu zadali přihlašovací údaje zabezpečení. Pokud musíte přihlašovací údaje uložit do souboru skriptu, musíte ho zabezpečit, abyste zabránili neoprávněnému přístupu.

[ @job_security_mode = ] job_security_mode

Určeno pouze pro informační účely. Není podporováno. Budoucí kompatibilita není zaručena.

Hodnoty návratového kódu

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

Remarks

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

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_agent.