sys.sp_addmergesubscription (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL Managed Instance

Maakt een push- of pull-merge-abonnement aan. Deze opgeslagen procedure wordt uitgevoerd bij Publisher in de publicatiedatabase.

Transact-SQL syntaxis-conventies

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

De naam van de publicatie. @publication is sysname, zonder standaard. De publicatie moet al bestaan.

[ @subscriber = ] N'abonnee'

De naam van de abonnee. @subscriber is sysname, met als standaard .NULL

[ @subscriber_db = ] N'subscriber_db'

De naam van de abonnementsdatabase. @subscriber_db is systeemnaam, met als standaard .NULL

[ @subscription_type = ] N'subscription_type'

Het soort abonnement. @subscription_type is nvarchar(15), met een standaard van push.

  • Als push, wordt een push-abonnement toegevoegd en wordt de Merge Agent toegevoegd bij de Distributor.
  • Als pull, wordt een pull-abonnement toegevoegd zonder een Merge Agent toe te voegen bij de Distributor.

Note

Anonieme abonnementen hoeven deze opgeslagen procedure niet te gebruiken.

[ @subscriber_type = ] N'subscriber_type'

Het type abonnee. @subscriber_type is nvarchar(15) en kan een van de volgende waarden zijn.

Value Description
local (standaard) Abonnee alleen bekend bij de Publisher.
global Abonnee bekend op alle servers.

In SQL Server 2005 (9.x) en latere versies worden lokale abonnementen clientabonnementen genoemd, en globale abonnementen serverabonnementen.

[ @subscription_priority = ] subscription_priority

Een nummer dat de prioriteit voor het abonnement aangeeft. @subscription_priority is echt, met als standaard .NULL Voor lokale en anonieme abonnementen is 0.0de prioriteit . Voor globale abonnementen moet de prioriteit kleiner zijn dan 100.0.

[ @sync_type = ] N'sync_type'

Het type abonnementssynchronisatie. @sync_type is nvarchar(15), met een standaard van automatic.

  • Als automatic, worden het schema en de initiĆ«le gegevens voor gepubliceerde tabellen eerst naar de abonnee overgedragen.
  • Als none, wordt aangenomen dat de abonnee het schema en de begingegevens voor gepubliceerde tabellen al heeft. Systeemtabellen en gegevens worden altijd overgedragen.

Note

We raden aan geen waarde van nonete specificeren.

[ @frequency_type = ] frequency_type

Een waarde die aangeeft wanneer de Merge Agent draait. @frequency_type is int, en kan een van de volgende waarden zijn.

Value Description
1 Eenmaal
4 Dagelijks
8 Wekelijks
16 Maandelijks
32 Maandelijks, relatief tot het frequentieinterval
64 Wanneer de SQL Server Agent start
NULL (standaard)

[ @frequency_interval = ] frequency_interval

De dag of dagen waarop de Merge Agent draait. @frequency_interval is int, en kan een van de volgende waarden zijn.

Value Description
1 Zondag
2 maandag
3 Tuesday
4 woensdag
5 donderdag
6 Vrijdag
7 Zaterdag
8 Dag
9 Doordeweeks
10 Weekenddagen
NULL (standaard)

[ @frequency_relative_interval = ] frequency_relative_interval

Het geplande samenvoegingsoptreden van het frequentieinterval in elke maand. @frequency_relative_interval is int, en kan een van deze waarden zijn.

Value Description
1 First
2 Second
4 Third
8 Fourth
16 Laatste
NULL (standaard)

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

De door @frequency_type gebruikte recurrence factor @frequency_recurrence_factor is int, met als standaard .NULL

[ @frequency_subday = ] frequency_subday

De eenheid voor @frequency_subday_interval. @frequency_subday is int, en kan een van de volgende waarden zijn.

Value Description
1 Eenmaal
2 Second
4 Minuut
8 Uur
NULL (standaard)

[ @frequency_subday_interval = ] frequency_subday_interval

De frequentie van @frequency_subday tussen elke samenvoeging optreden. @frequency_subday_interval is int, met als standaard .NULL

[ @active_start_time_of_day = ] active_start_time_of_day

Het tijdstip waarop de Merge Agent voor het eerst wordt gepland, geformatteerd als HHmmss. @active_start_time_of_day is int, met als standaard .NULL

[ @active_end_time_of_day = ] active_end_time_of_day

Het tijdstip waarop de Merge Agent stopt met worden gepland, geformatteerd als HHmmss. @active_end_time_of_day is int, met als standaard .NULL

[ @active_start_date = ] active_start_date

De datum waarop de Merge Agent voor het eerst wordt gepland, geformatteerd als yyyyMMdd. @active_start_date is int, met een standaard van NULL.

[ @active_end_date = ] active_end_date

De datum waarop de Merge Agent stopt met worden gepland, geformatteerd als yyyyMMdd. @active_end_date is int, met als standaard .NULL

[ @optional_command_line = ] N'optional_command_line'

De optionele opdrachtprompt om uit te voeren. @optional_command_line is nvarchar(4000), met een standaard van NULL. Deze parameter wordt gebruikt om een commando toe te voegen dat de uitvoer vastlegt en opslaat in een bestand, of om een configuratiebestand of attribuut te specificeren.

[ @description = ] Beschrijving van'

Een korte beschrijving van dit samenvoegingsabonnement. @description is nvarchar(255), met een standaard van NULL. Deze waarde wordt weergegeven door de Replication Monitor in de Friendly Name kolom, die kan worden gebruikt om de abonnementen voor een gemonitorde publicatie te sorteren.

[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'

Geeft aan of het abonnement gesynchroniseerd kan worden via Microsoft Windows Synchronization Manager. @enabled_for_syncmgr is nvarchar(5), met als standaard .false

  • Als false, is het abonnement niet geregistreerd bij Synchronization Manager.
  • Als true, is het abonnement geregistreerd bij Synchronization Manager en kan het worden gesynchroniseerd zonder SQL Server Management Studio te starten.

[ @offloadagent = ] aflaadmiddel

Geeft aan dat de agent op afstand geactiveerd kan worden. @offloadagent is bit, met als standaard .0

Deze parameter is verouderd en wordt behouden voor achterwaartse compatibiliteit van scripts.

[ @offloadserver = ] N'offloadserver'

Specificeert de netwerknaam van de server die gebruikt moet worden voor de activatie van externe agenten. @offloadserver is sysname, met als standaard .NULL

[ @use_interactive_resolver = ] N'use_interactive_resolver'

Maakt het toe om conflicten interactief op te lossen voor alle artikelen die interactieve oplossing mogelijk maken. @use_interactive_resolver is nvarchar(5), met als standaard .false

[ @merge_job_name = ] N'merge_job_name'

Deze parameter is verouderd en kan niet worden ingesteld. @merge_job_name is een sysname, met als standaard .NULL

[ @hostname = ] N'hostnaam'

Overschrijft de waarde die door HOST_NAME wordt teruggegeven wanneer deze functie wordt gebruikt in de WHERE-clausule van een geparametriseerd filter. @hostname is sysname, met als standaard .NULL

Important

Om prestatieredenen raden we aan geen functies toe te passen op kolomnamen in geparametriseerde rijfilterclausules, zoals LEFT([MyColumn]) = SUSER_SNAME(). Als je HOST_NAME gebruikt in een filterclausule en de HOST_NAME-waarde overschrijft, kan het nodig zijn om datatypes te converteren met CONVERT. Voor meer informatie over best practices in dit geval, zie de sectie "Overschrijven van de HOST_NAME() Waarde" in het onderwerp Geparametriseerde Filters - Geparametriseerde Rijfilters.

Codewaarden retourneren

0 (geslaagd) of 1 (mislukt).

Remarks

sp_addmergesubscription wordt gebruikt bij merge-replicatie.

Wanneer sp_addmergesubscription wordt uitgevoerd door een lid van de sysadmin fixed server-rol om een push-abonnement aan te maken, wordt de Merge Agent-taak impliciet aangemaakt en draait deze onder het SQL Server Agent-serviceaccount. We raden aan om sp_addmergepushsubscription_agent uit te voeren en de inloggegevens van een andere, agent-specifieke Windows-account voor @job_login en @job_password op te geven. Zie Replication Agent Security Modelvoor meer informatie.

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

Alleen leden van de sysadmin-vaste serverrol of db_owner vaste databaserol kunnen uitvoeren sp_addmergesubscription.