sys.sp_addmergesubscription (Transact-SQL)

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

Skapar en push- eller pull-sammanslagningsprenumeration. Den här lagrade proceduren körs i Publisher i publikationsdatabasen.

Transact-SQL syntaxkonventioner

Syntax

sys.sp_addmergesubscription
    [ @publication = ] N'publication'
    [ , [ @subscriber = ] N'subscriber' ]
    [ , [ @subscriber_db = ] N'subscriber_db' ]
    [ , [ @subscription_type = ] N'subscription_type' ]
    [ , [ @subscriber_type = ] N'subscriber_type' ]
    [ , [ @subscription_priority = ] subscription_priority ]
    [ , [ @sync_type = ] N'sync_type' ]
    [ , [ @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 ]
    [ , [ @optional_command_line = ] N'optional_command_line' ]
    [ , [ @description = ] N'description' ]
    [ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
    [ , [ @offloadagent = ] offloadagent ]
    [ , [ @offloadserver = ] N'offloadserver' ]
    [ , [ @use_interactive_resolver = ] N'use_interactive_resolver' ]
    [ , [ @merge_job_name = ] N'merge_job_name' ]
    [ , [ @hostname = ] N'hostname' ]
[ ; ]

Arguments

[ @publication = ] N'publicering'

Namnet på publikationen. @publication är sysname, utan standard. Publikationen måste redan existera.

[ @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

[ @subscription_type = ] N'subscription_type'

Typen av prenumeration. @subscription_type är nvarchar(15), med en standard på push.

  • Om push, läggs en push-prenumeration till och Merge Agent läggs till hos distributören.
  • Om pull, läggs en pull-prenumeration till utan att lägga till en Merge Agent hos distributören.

Note

Anonyma prenumerationer behöver inte använda denna lagrade procedur.

[ @subscriber_type = ] N'subscriber_type'

Typen av prenumerant. @subscriber_type är nvarchar(15) och kan vara ett av följande värden.

Value Description
local (standardinställning) Prenumerant endast känd av Publisher.
global Prenumerant känd på alla servrar.

I SQL Server 2005 (9.x) och senare versioner kallas lokala prenumerationer för klientprenumerationer, och globala prenumerationer kallas serverprenumerationer.

[ @subscription_priority = ] subscription_priority

Ett nummer som anger prioritet för prenumerationen. @subscription_priority är verklig, med en standard på NULL. För lokala och anonyma prenumerationer är 0.0prioriteten . För globala prenumerationer måste prioriteten vara mindre än 100.0.

[ @sync_type = ] N'sync_type'

Typen av prenumerationssynkronisering. @sync_type är nvarchar(15), med en standard på automatic.

  • Om automatic, överförs schemat och initialdata för publicerade tabeller först till prenumeranten.
  • Om none, antas prenumeranten redan ha schemat och initialdata för publicerade tabeller. Systemtabeller och data överförs alltid.

Note

Vi rekommenderar att man inte specificerar ett värde på none.

[ @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
4 Daglig
8 En gång i veckan
16 Monthly
32 Månadsvis, relativt frekvensintervallet
64 När SQL Server Agent startar
NULL (standardinställning)

[ @frequency_interval = ] frequency_interval

Dagen eller 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

Den schemalagda sammanslagningen av frekvensintervallet varje månad. @frequency_relative_interval är int, och kan vara ett av dessa 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 .NULL

[ @frequency_subday = ] frequency_subday

Enheten för @frequency_subday_interval. @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

Frekvensen för @frequency_subday att inträffa mellan varje sammanslagning. @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 .NULL

[ @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 .NULL

[ @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 .NULL

[ @active_end_date = ] active_end_date

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

[ @optional_command_line = ] N'optional_command_line'

Den valfria kommandoprompten att köra. @optional_command_line är nvarchar(4000), med standardvärdet .NULL Denna parameter används för att lägga till ett kommando som fångar utdata och sparar det i en fil eller för att specificera en konfigurationsfil eller attribut.

[ @description = ] Ingen beskrivning'

En kort beskrivning av denna sammanslagningsprenumeration. @description är nvarchar(255), med en standard på NULL. Detta värde visas av Replication Monitor i kolumnen Friendly Name , som kan användas för att sortera prenumerationerna för en övervakad publikation.

[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'

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

[ @offloadagent = ] avlastningsmedel

Specificerar att agenten kan aktiveras på distans. @offloadagent är bit, med standardvärdet .0

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

[ @offloadserver = ] N'avlasta server'

Specificerar nätverksnamnet på servern som ska användas för fjärraktivering av agenter. @offloadserver är sysname, med standardvärdet .NULL

[ @use_interactive_resolver = ] N'use_interactive_resolver'

Tillåter att konflikter löses interaktivt för alla artiklar som möjliggör interaktiv lösning. @use_interactive_resolver är nvarchar(5), med en standard på false.

[ @merge_job_name = ] N'merge_job_name'

Denna parameter är föråldrad och kan inte sättas. @merge_job_name är sysname, med standardvärdet .NULL

[ @hostname = ] N'hostname'

Överskriver värdet som returneras av HOST_NAME när denna funktion används i WHERE-klausulen i ett parameteriserat filter. @hostname är sysname, med standardvärdet .NULL

Important

Av prestandaskäl rekommenderar vi att du inte tillämpar funktioner på kolumnnamn i parameteriserade radfilterklausuler, såsom LEFT([MyColumn]) = SUSER_SNAME(). Om du använder HOST_NAME i en filterklausul och åsidosätter värdet HOST_NAME kan det vara nödvändigt att konvertera datatyper med CONVERT. För mer information om bästa praxis i detta fall, se avsnittet "Att överskriva HOST_NAME()-värdet" i ämnet Parameteriserade filter - Parameteriserade radfilter.

Returnera kodvärden

0 (lyckades) eller 1 (fel).

Remarks

sp_addmergesubscription används vid sammanslagningsreplikation.

När sp_addmergesubscription den körs av en medlem i sysadmin-fastserverrollen för att skapa en push-prenumeration, skapas Merge Agent-jobbet implicit och körs under SQL Server Agent-tjänstekontot. Vi rekommenderar att du utför sp_addmergepushsubscription_agent och specificerar inloggningsuppgifterna för ett annat, agentspecifikt Windows-konto för @job_login och @job_password. Mer information finns i Säkerhetsmodell för replikeringsagent.

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