Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure 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
-
0specificerar SQL Server-autentisering -
1specificerar 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:
-
0specificerar autentisering av SQL Server. -
1specificerar 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.