sys.sp_addmergepushsubscription_agent (Transact-SQL)

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

Lägger till ett nytt agentjobb som används för att schemalägga synkronisering av en pushprenumeration till en sammanslagningspublikation. Den här lagrade proceduren körs i Publisher i publikationsdatabasen.

Important

När en Publisher konfigureras med en fjärrdistributör skickas värdena för alla parametrar, inklusive @job_login och @job_password, till distributören som klartext. Du bör kryptera anslutningen mellan Utgivaren och dess fjärranslutna distributör innan du kör den här lagrade proceduren. Mer information finns i Konfigurera Databasmotor för SQL Server för kryptering av anslutningar.

Transact-SQL syntaxkonventioner

Note

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

Syntax

sys.sp_addmergepushsubscription_agent
    [ @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' ]
    [ , [ @publisher_security_mode = ] publisher_security_mode ]
    [ , [ @publisher_login = ] N'publisher_login' ]
    [ , [ @publisher_password = ] N'publisher_password' ]
    [ , [ @job_login = ] N'job_login' ]
    [ , [ @job_password = ] N'job_password' ]
    [ , [ @job_name = ] N'job_name' ]
    [ , [ @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 ]
    [ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
[ ; ]

Arguments

[ @publication = ] N'publicering'

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

[ @subscriber = ] N'prenumerant'

Namnet på prenumeranten. @subscriber är sysname, med standardvärdet .NULL

[ @subscriber_db = ] N'subscriber_db'

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

[ @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 smallint, med en standard på 1. Följande värden definierar säkerhetsläget:

  • 0 specificerar autentisering av SQL Server.
  • 1 specificerar Windows-autentisering.
  • 2specificerar autentisering av Microsoft Entra-lösenord, 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.

[ @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 @subscriber_login krävs om @subscriber_security_mode är satt till 0.

[ @subscriber_password = ] N'subscriber_password'

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

Important

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.

[ @publisher_security_mode = ] publisher_security_mode

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

  • 0 specificerar autentisering av SQL Server.
  • 1 specificerar Windows-autentisering.
  • 2specificerar autentisering av Microsoft Entra-lösenord, 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.

[ @publisher_login = ] N'publisher_login'

Inloggningen att använda när man ansluter till en utgivare vid synkronisering. @publisher_login är sysname, med standardvärdet .NULL

[ @publisher_password = ] N'publisher_password'

Lösenordet som används vid anslutning till utgivaren. @publisher_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.

[ @job_login = ] N'job_login'

Inloggningen för Windows-kontot där agenten körs. @job_login är nvarchar(257), med en standard på NULL. Detta Windows-konto används alltid för agentanslutningar till distributören samt för anslutningar till abonnenten och Publisher vid användning av Windows Integrerad autentisering.

[ @job_password = ] N'job_password'

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

Important

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

[ @frequency_type = ] frequency_type

Ett värde som indikerar när Merge Agent körs. @frequency_type är int, och kan vara ett av följande värden.

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

Note

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

[ @frequency_interval = ] frequency_interval

Dagarna då Merge Agent körs. @frequency_interval är int, och kan vara ett av följande värden.

Value Description
1 Sunday
2 Måndag
3 Tuesday
4 Onsdag
5 Torsdag
6 Fredag
7 lördag
8 Dag
9 Vardagar
10 Helgdagar
NULL (standardinställning)

[ @frequency_relative_interval = ] frequency_relative_interval

Datumet för Merge Agent. 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 First
2 Second
4 Third
8 Fourth
16 Sist
NULL (standardinställning)

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

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

[ @frequency_subday = ] frequency_subday

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

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

[ @frequency_subday_interval = ] frequency_subday_interval

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

[ @active_start_time_of_day = ] active_start_time_of_day

Den tid på dygnet då Merge Agent först schemaläggs och formateras 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å Merge Agent slutar schemaläggas och formateras som HHmmss. @active_end_time_of_day är int, med standardvärdet .235959

[ @active_start_date = ] active_start_date

Datumet då Merge Agent först schemaläggs och formateras som yyyyMMdd. @active_start_date är int, med standardvärdet .0

[ @active_end_date = ] active_end_date

Datumet då Merge Agent slutar schemalagas, formaterat som yyyyMMdd. @active_end_date är int, med standardvärdet .99991231

[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'

Specificerar om prenumerationen kan synkroniseras via Windows 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.

Returnera kodvärden

0 (lyckades) eller 1 (fel).

Remarks

sp_addmergepushsubscription_agent används i sammanslagningsreplikering och använder funktionalitet liknande sp_addpushsubscription_agent.

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

DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica'; 
SET @hostname = N'adventure-works\david8'

-- Add a push subscription to a merge publication.
USE [AdventureWorks2022];
EXEC sp_addmergesubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @subscription_type = N'push',
  @hostname = @hostname;

--Add an agent job to synchronize the push subscription.
EXEC sp_addmergepushsubscription_agent 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @job_login = $(Login), 
  @job_password = $(Password);
GO

Permissions

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