sys.sp_addpullsubscription_agent (Transact-SQL)

gäller för:SQL ServerAzure SQL Managed Instance

Lägger till ett nytt schemalagt agentjobb som används för att synkronisera en pull-prenumeration med en transaktionell publikation. Denna lagrade procureur utförs hos prenumeranten i prenumerationsdatabasen.

Transact-SQL syntaxkonventioner

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

Namnet på utgivaren. @publisher är sysname, utan standard.

Note

Servernamn kan anges som <Hostname>,<PortNumber> för en standardinstans eller <Hostname>\<InstanceName>,<PortNumber> för en namngiven instans. Ange portnumret för anslutningen när SQL Server distribueras i Linux eller Windows med en anpassad port och webbläsartjänsten är inaktiverad. Användningen av anpassade portnummer för fjärrdistributör gäller för SQL Server 2019 (15.x) och senare versioner.

[ @publisher_db = ] N'publisher_db'

Namnet på Publisher-databasen. @publisher_db är sysname, med standardvärdet .NULL @publisher_db ignoreras av Oracle Publishers.

[ @publication = ] N'publicering'

Namnet på publikationen. @publication är sysname, utan standard.

[ @subscriber = ] N'prenumerant'

Namnet på prenumerantinstansen eller namnet på AG-lyssnaren om abonnentdatabasen finns i en tillgänglighetsgrupp. @subscriber är sysname, med standardvärdet .NULL

Note

Denna parameter är föråldrad och behålls för bakåtkompatibilitet mellan skript.

När du kör sp_addpullsubscription_agent för en abonnent som är en del av en AG, ställ @subscriber till AG-lyssnarnamnet. Om du kör SQL Server versioner 2016 (13.x) och tidigare, eller SQL Server 2017 (14.x) före CU 16, körs den lagrade proceduren utan att ge ett fel, men den @subscriber parametern på replikeringsfunktionen Distribution Agent refererar inte till AG-lyssnarnamnet; parametern skapas med namnet på prenumerantservern där kommandot exekveras. För att ändra detta problem, uppdatera manuellt parametern Distribution Agent jobb@subscriber med AG-lyssnarnamnets värde.

[ @subscriber_db = ] N'subscriber_db'

Namnet på prenumerationsdatabasen. @subscriber_db är sysname, med standardvärdet .NULL

Note

Denna parameter är föråldrad och behålls för bakåtkompatibilitet mellan skript.

[ @subscriber_security_mode = ] subscriber_security_mode

Säkerhetsläget att använda när man ansluter till en abonnent vid synkronisering. @subscriber_security_mode är int, med standardvärdet .NULL

  • 0 specificerar SQL Server-autentisering
  • 1 specificerar Windows-autentisering

Note

Denna parameter är föråldrad och behålls för bakåtkompatibilitet mellan skript. Distribution Agent ansluter alltid till den lokala abonnenten med hjälp av Windows-autentisering. Om ett annat värde än NULL eller 1 anges för denna parameter returneras ett varningsmeddelande.

[ @subscriber_login = ] N'subscriber_login'

Prenumerantinloggningen används när man ansluter till en prenumerant vid synkronisering. @subscriber_login är sysname, med standardvärdet .NULL

Note

Denna parameter är föråldrad och behålls för bakåtkompatibilitet mellan skript. Om ett värde anges för denna parameter returneras ett varningsmeddelande, men värdet ignoreras.

[ @subscriber_password = ] N'subscriber_password'

Prenumerantlösenordet. @subscriber_password krävs om @subscriber_security_mode är satt till 0. @subscriber_password är sysname, med standardvärdet .NULL Om ett prenumerantlösenord används krypteras det automatiskt.

Note

Denna parameter är föråldrad och behålls för bakåtkompatibilitet mellan skript. Om ett värde anges för denna parameter returneras ett varningsmeddelande, men värdet ignoreras.

[ @distributor = ] N'distributor'

Namnet på distributören. @distributor är systemnamn, med standardvärdet angivet av @publisher.

[ @distribution_db = ] N'distribution_db'

Namnet på distributionsdatabasen. @distribution_db är sysname, med standardvärdet .NULL

[ @distributor_security_mode = ] distributor_security_mode

Note

Microsoft Entra ID kallades tidigare Azure Active Directory (Azure AD).

Säkerhetsläget att använda när man ansluter till en distributör vid synkronisering. @distributor_security_mode är int, med standardvärdet .1 Följande värden definierar säkerhetsläget:

  • 0 specificerar autentisering av SQL Server.
  • 1 specificerar Windows-autentisering.
  • 2specificerar Microsoft Entra lösenordsautentisering med start från SQL Server 2022 (16.x) CU 6.
  • 3specificerar Microsoft Entra integrerad autentisering med start från SQL Server 2022 (16.x) CU 6.
  • 4specificerar Microsoft Entra-tokenautentisering med start från SQL Server 2022 (16.x) CU 6.

Important

Använd Windows-autentisering när det är möjligt.

[ @distributor_login = ] N'distributor_login'

Distributörens inloggning används vid anslutning till en distributör vid synkronisering. @distributor_login är sysname, med standardvärdet .NULL @distributor_login krävs om @distributor_security_mode är satt till 0.

[ @distributor_password = ] N'distributor_password'

Distributörens lösenord. @distributor_password krävs om @distributor_security_mode är satt till 0. @distributor_password är sysname, med standardvärdet .NULL

Important

Använd inte ett tomt lösenord. Använd ett starkt lösenord. När det är möjligt uppmanar du användarna att ange säkerhetsautentiseringsuppgifter vid körning. Om du måste lagra autentiseringsuppgifter i en skriptfil måste du skydda filen för att förhindra obehörig åtkomst.

[ @optional_command_line = ] N'optional_command_line'

En valfri kommandoprompt som tillhandahölls Distribution Agent. Exempel: -DefinitionFile C:\Distdef.txt eller -CommitBatchSize 10. @optional_command_line är nvarchar(4000), med en tom sträng som standard.

[ @frequency_type = ] frequency_type

Frekvensen för att schemalägga Distribution Agent. @frequency_type är int, och kan vara ett av följande värden.

Value Description
1 En gång
2 (standardinställning) På begäran
4 Daglig
8 En gång i veckan
16 Monthly
32 Månadssläkting
64 Automatisk start
128 Återkommande

Note

Att specificera ett värde på 64 gör att Distribution Agent körs i kontinuerligt läge. Detta motsvarar att sätta parametern -Continuous för agenten. Mer information finns i Distributionsagent för replikering.

[ @frequency_interval = ] frequency_interval

Värdet som gäller för frekvensen som sätts av @frequency_type. @frequency_interval är int, med standardvärdet .1

[ @frequency_relative_interval = ] frequency_relative_interval

Datumet för distributionsagenten. Denna parameter används när @frequency_type sätts till 32 (månatlig relativ). @frequency_relative_interval är int, och kan vara ett av följande värden.

Value Description
1 (standardinställning) First
2 Second
4 Third
8 Fourth
16 Sist

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

Upprepningsfaktorn som används av @frequency_type. @frequency_recurrence_factor är int, med standardvärdet .1

[ @frequency_subday = ] frequency_subday

Specificerar hur ofta man ska boka om under den definierade perioden. @frequency_subday är int, och kan vara ett av följande värden.

Value Description
1 (standardinställning) En gång
2 Second
4 Minut
8 Timme

[ @frequency_subday_interval = ] frequency_subday_interval

Pausen för @frequency_subday. @frequency_subday_interval är int, med standardvärdet .1

[ @active_start_time_of_day = ] active_start_time_of_day

Den tid på dygnet då distributionsagenten först schemaläggs är formaterad som HHmmss. @active_start_time_of_day är int, med standardvärdet .0

[ @active_end_time_of_day = ] active_end_time_of_day

Den tid på dygnet då distributionsagenten slutar schemalis, formaterad som HHmmss. @active_end_time_of_day är int, med standardvärdet .0

[ @active_start_date = ] active_start_date

Datumet då distributionsagenten först schemaläggs ut, formaterad som yyyyMMdd. @active_start_date är int, med standardvärdet .0

[ @active_end_date = ] active_end_date

Datumet då distributionsagenten slutar schemalis, formaterad som yyyyMMdd. @active_end_date är int, med standardvärdet .0

[ @distribution_jobid = ] distribution_jobid UTGÅNG

ID:t på Distribution Agent för detta jobb. @distribution_jobid är en OUTPUT parameter av typen binär(16), med standardvärdet .NULL

[ @encrypted_distributor_password = ] encrypted_distributor_password

@encrypted_distributor_password är bit, med standardvärdet .0

Note

Att ställa in @encrypted_distributor_password stöds inte längre. Att försöka sätta denna bitparameter till 1 kommer att resultera i ett fel.

[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'

Specificerar om prenumerationen kan synkroniseras via Microsoft Synchronization Manager. @enabled_for_syncmgr är nvarchar(5), med standardvärdet .false

  • Om false, är prenumerationen inte registrerad hos Synchronization Manager.
  • Om true, är prenumerationen registrerad i Synchronization Manager och kan synkroniseras utan att starta SQL Server Management Studio.

[ @ftp_address = ] N'ftp_address'

Denna parameter är föråldrad och behålls för bakåtkompatibilitet mellan skript.

[ @ftp_port = ] ftp_port

Denna parameter är föråldrad och behålls för bakåtkompatibilitet mellan skript.

[ @ftp_login = ] N'ftp_login'

Denna parameter är föråldrad och behålls för bakåtkompatibilitet mellan skript.

[ @ftp_password = ] N'ftp_password'

Denna parameter är föråldrad och behålls för bakåtkompatibilitet mellan skript.

[ @alt_snapshot_folder = ] N'alt_snapshot_folder'

Anger platsen för den alternativa mappen för ögonblicksbilden. @alt_snapshot_folder är nvarchar(255), med en standard på NULL.

[ @working_directory = ] N'working_directory'

Namnet på arbetskatalogen som används för att lagra data och schemafiler för publikationen. @working_directory är nvarchar(255), med en standard på NULL. Namnet ska anges i UNC-format.

[ @use_ftp = ] N'use_ftp'

Specificerar användningen av FTP istället för det vanliga protokollet för att hämta snapshots. @use_ftp är nvarchar(5), med en standard på false.

[ @publication_type = ] publication_type

Specificerar vilken typ av publikation man kan kopiera. @publication_type är tinyint, med standardvärdet .0

  • Om 0, är publicering en transaktionstyp.
  • Om 1, är publicering en snapshot-typ.
  • Om 2, är publicering en sammanslagningstyp.

[ @dts_package_name = ] N'dts_package_name'

Specificerar namnet på DTS-paketet. @dts_package_name är sysname, med standardvärdet .NULL Till exempel, för att specificera ett paket av DTSPub_Package, skulle parametern vara @dts_package_name = N'DTSPub_Package'.

[ @dts_package_password = ] N'dts_package_password'

Specificerar lösenordet på paketet, om det finns ett. @dts_package_password är sysname, med standardvärdet , NULLvilket betyder att inget lösenord finns på paketet.

Note

Du måste ange ett lösenord om @dts_package_name är angivet.

[ @dts_package_location = ] N'dts_package_location'

Specificerar paketets plats. @dts_package_location är nvarchar(12), med en standard på subscriber. Platsen för paketet kan vara distributor eller subscriber.

[ @reserved = ] Inte reserverat'

Identifieras endast i informationssyfte. Stöds ej. Framtida kompatibilitet garanteras inte.

[ @offloadagent = ] N'lossningsmedel'

Denna parameter är föråldrad och behålls för bakåtkompatibilitet mellan skript. Om ett värde anges för denna parameter returneras ett varningsmeddelande, men värdet ignoreras. Att sätta @offloadagent till ett annat värde än false genererar ett fel.

[ @offloadserver = ] N'avlasta server'

Denna parameter är föråldrad och behålls för bakåtkompatibilitet mellan skript. Om ett värde anges för denna parameter returneras ett varningsmeddelande, men värdet ignoreras. Att sätta @offloadserver till ett annat värde än false genererar ett fel.

[ @job_name = ] N'job_name'

Namnet på ett befintligt agentjobb. @job_name är sysname, med standardvärdet .NULL Denna parameter specificeras endast när prenumerationen synkroniseras med ett befintligt jobb istället för ett nyskapat jobb (standard). Om du inte är medlem i sysadmin-rollen med fast server måste du specificera @job_login och @job_password när du anger @job_name.

[ @job_login = ] N'job_login'

Inloggningen för Windows-kontot där agenten körs. @job_login är nvarchar(257), utan standard. Detta Windows-konto används alltid för agentanslutningar till prenumeranten.

[ @job_password = ] N'job_password'

Lösenordet till Windows-kontot som agenten körs under. @job_password är sysname, utan standard.

Important

Använd inte ett tomt lösenord. Använd ett starkt lösenord. När det är möjligt uppmanar du användarna att ange säkerhetsautentiseringsuppgifter vid körning. Om du måste lagra autentiseringsuppgifter i en skriptfil måste du skydda filen för att förhindra obehörig åtkomst.

[ @job_security_mode = ] job_security_mode

Identifieras endast i informationssyfte. Stöds ej. Framtida kompatibilitet garanteras inte.

Returnera kodvärden

0 (lyckades) eller 1 (fel).

Remarks

sp_addpullsubscription_agent används vid snapshot-replikering och transaktionell replikation.

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

Endast medlemmar av sysadmin-fasta serverrollen eller db_owner fasta databasrollen kan köra sp_addpullsubscription_agent.