sys.sp_addmergesubscription (Transact-SQL)

Dotyczy:SQL ServerAzure SQL Managed Instance

Tworzy subskrypcję push lub pull merge. Ta procedura składowana jest wykonywana w programie Publisher w bazie danych publikacji.

Transact-SQL konwencje składni

Składnia

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

Nazwa publikacji. @publication to sysname, bez domyślnego zapisu. Publikacja musi już istnieć.

[ @subscriber = ] N'subskrybent'

Nazwa subskrybenta. @subscriber to nazwa systemu z domyślnym .NULL

[ @subscriber_db = ] N'subscriber_db'

Nazwa bazy danych subskrypcji. @subscriber_db to nazwa systemu, z domyślnym .NULL

[ @subscription_type = ] N'subscription_type'

Rodzaj subskrypcji. @subscription_type to nvarchar(15), z domyślnym .push

  • Jeśli push, dodana jest subskrypcja push i Merge Agent jest dodawany u dystrybutora.
  • Jeśli , pullsubskrypcja pull jest dodawana bez dodawania Merge Agent u dystrybutora.

Note

Anonimowe subskrypcje nie muszą korzystać z tej procedury przechowywanej.

[ @subscriber_type = ] N'subscriber_type'

Typ Subskrybenta. @subscriber_type to nvarchar(15) i może być jedną z następujących wartości.

Value Description
local (ustawienie domyślne) Subskrybent znany tylko Publisher.
global Subskrybent znany wszystkim serwerom.

W wersjach SQL Server 2005 (9.x) i nowszych, subskrypcje lokalne nazywane są subskrypcjami klientowymi, a subskrypcje globalne subskrypcjami serwerowymi.

[ @subscription_priority = ] subscription_priority

Numer wskazujący priorytet subskrypcji. @subscription_priority jest rzeczywisty, z domyślnym .NULL Dla lokalnych i anonimowych subskrypcji priorytetem 0.0jest . Dla subskrypcji globalnych priorytet musi być mniejszy niż 100.0.

[ @sync_type = ] N'sync_type'

Typ synchronizacji subskrypcji. @sync_type to nvarchar(15), z domyślnym obciążeniem automatic.

  • Jeśli automatic, schemat i dane początkowe dla opublikowanych tabel są najpierw przekazywane do Abonenta.
  • Jeśli , noneSubscriber zakłada się, że posiada już schemat i dane początkowe dla opublikowanych tabel. Tabele systemowe i dane są zawsze przesyłane.

Note

Zalecamy nie określać wartości .none

[ @frequency_type = ] frequency_type

Wartość wskazująca, kiedy uruchamia się Merge Agent. @frequency_type to int i może być jedną z następujących wartości.

Value Description
1 Raz
4 Codziennie
8 Weekly
16 Monthly
32 Miesięcznie, w stosunku do przedziału częstotliwości
64 Kiedy uruchamia się SQL Server Agent
NULL (ustawienie domyślne)

[ @frequency_interval = ] frequency_interval

Dzień lub dni, w których działa Merge Agent. @frequency_interval to int i może być jedną z następujących wartości.

Value Description
1 Niedziela
2 Poniedziałek
3 Tuesday
4 Środa
5 Czwartek
6 Piątek
7 Sobota
8 Dzień
9 Dni powszednie
10 Dni weekendowe
NULL (ustawienie domyślne)

[ @frequency_relative_interval = ] frequency_relative_interval

Zaplanowane wystąpienie przedziału częstotliwości w każdym miesiącu. @frequency_relative_interval jest int i może być jedną z tych wartości.

Value Description
1 First
2 sekunda
4 Third
8 Fourth
16 Ostatni
NULL (ustawienie domyślne)

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

Współczynnik powtarzalności używany przez @frequency_type. @frequency_recurrence_factor jest int z wartością domyślną NULL.

[ @frequency_subday = ] frequency_subday

Jednostka do @frequency_subday_interval. @frequency_subday to int i może być jedną z następujących wartości.

Value Description
1 Raz
2 sekunda
4 Minuta
8 Godzina
NULL (ustawienie domyślne)

[ @frequency_subday_interval = ] frequency_subday_interval

Częstotliwość @frequency_subday występuje między każdym połączeniem. @frequency_subday_interval jest int z wartością domyślną NULL.

[ @active_start_time_of_day = ] active_start_time_of_day

Pora dnia, w której Merge Agent jest po raz pierwszy zaplanowany, sformatowana jako HHmmss. @active_start_time_of_day jest z wartością domyślną .

[ @active_end_time_of_day = ] active_end_time_of_day

Pora dnia, w której Merge Agent przestaje być planowany, sformatowana jako HHmmss. @active_end_time_of_day jest int, z domyślnym obciążeniem NULL.

[ @active_start_date = ] active_start_date

Data, w której Merge Agent jest po raz pierwszy zaplanowany, jest sformatowana jako yyyyMMdd. @active_start_date jest int, z domyślnym .NULL

[ @active_end_date = ] active_end_date

Data, kiedy Merge Agent przestaje być planowany, sformatowana jako yyyyMMdd. @active_end_date jest int, z domyślnym .NULL

[ @optional_command_line = ] N'optional_command_line'

Opcjonalny wiersz poleceń do wykonania. @optional_command_line to nvarchar(4000), z domyślnym obciążeniem NULL. Ten parametr służy do dodania polecenia, które przechwytuje wyjście i zapisuje je do pliku lub do określenia pliku konfiguracyjnego lub atrybutu.

[ @description = ] N'opis"

Krótki opis tej subskrypcji merge. @description to nvarchar(255), z domyślnym obciążeniem NULL. Ta wartość jest wyświetlana przez Monitor Replikacji w kolumnie Friendly Name , który może być używany do sortowania subskrypcji dla monitorowanej publikacji.

[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'

Określa, czy subskrypcja może być zsynchronizowana przez Microsoft Windows Synchronization Manager. @enabled_for_syncmgr to nvarchar(5), z domyślnym .false

  • Jeśli false, subskrypcja nie jest zarejestrowana w Synchronization Manager.
  • Jeśli true, subskrypcja jest zarejestrowana w Synchronization Manager i może być synchronizowana bez uruchamiania SQL Server Management Studio.

[ @offloadagent = ] offloadagent

Określa, że agent może być aktywowany zdalnie. @offloadagent jest bit, z domyślnym .0

Ten parametr jest przestarzały i jest utrzymywany w celu zapewnienia zgodności z poprzednimi wersjami skryptów.

[ @offloadserver = ] N'offloadserver'

Określa nazwę sieciową serwera, który ma być używany do zdalnej aktywacji agenta. @offloadserver jest nazwą systemu z domyślnym .NULL

[ @use_interactive_resolver = ] N'use_interactive_resolver'

Pozwala na interaktywne rozwiązywanie konfliktów dla wszystkich artykułów umożliwiających interaktywne rozwiązywanie. @use_interactive_resolver jest nvarchar(5), z domyślnym .false

[ @merge_job_name = ] N'merge_job_name'

Ten parametr jest przestarzały i nie da się go ustawić. @merge_job_name to nazwa systemu, z domyślnym .NULL

[ @hostname = ] N'hostname'

Nadpisuje wartość zwracaną przez HOST_NAME , gdy funkcja ta jest używana w klauzuli WHERE filtra parametryzowanego. @hostname to nazwa systemu, z domyślnym .NULL

Important

Ze względów wydajnościowych zalecamy, aby nie stosować funkcji do nazw kolumn w parametryzowanych klauzulach filtrów wierszowych, takich jak LEFT([MyColumn]) = SUSER_SNAME(). Jeśli użyjesz HOST_NAME w klauzuli filtracyjnej i nadpiszesz wartość HOST_NAME, może być konieczne przekonwertowanie typów danych za pomocą CONVERT. Więcej informacji o najlepszych praktykach w tym przypadku można znaleźć w sekcji "Nadpisywanie wartości HOST_NAME()" w temacie Filtry parametryzowane – Filtry wierszowe parametryzowane.

Zwracanie wartości kodu

0 (powodzenie) lub 1 (niepowodzenie).

Remarks

sp_addmergesubscription jest używany w replikacji scalania.

Gdy sp_addmergesubscription jest wykonywany przez członka stałej roli serwera administratora systemu, aby utworzyć subskrypcję push, zadanie Merge Agent jest niejawnie tworzone i uruchamiane na koncie usługi SQL Server Agent. Zalecamy wykonanie sp_addmergepushsubscription_agent i określenie danych uwierzytelniających innego, specyficznego dla agenta konta Windows dla @job_login i @job_password. Aby uzyskać więcej informacji, zobacz model zabezpieczeń agenta replikacji .

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

Tylko członkowie roli stałego serwera systemowego lub stałej db_owner stałej bazy danych mogą wykonywać sp_addmergesubscription.