sp_addmergesubscription (Transact-SQL)

Область применения: SQL Server Управляемый экземпляр SQL Azure

Создает подписку на принудительную публикацию слиянием или публикацию слиянием по запросу. Эта хранимая процедура выполняется на издателе в базе данных публикации.

Соглашения о синтаксисе Transact-SQL

Синтаксис

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' ]
[ ; ]

Аргументы

[ @publication = ] N'publication'

Имя публикации. @publication — sysname без значения по умолчанию. Публикация уже должна существовать.

[ @subscriber = ] N'подписчик'

Имя подписчика. @subscriber — sysname с значением по умолчаниюNULL.

[ @subscriber_db = ] N'subscriber_db'

Имя базы данных подписки. @subscriber_db — sysname с значением по умолчаниюNULL.

[ @subscription_type = ] N'subscription_type'

Тип подписки. @subscription_type — nvarchar(15), с значением по умолчаниюpush.

  • Если pushдобавляется push-подписка, а агент слияния добавляется на распространителю.
  • Если pullподписка на вытягивание добавляется без добавления агент слияния на распространителю.

Примечание.

Анонимные подписки не должны использовать эту хранимую процедуру.

[ @subscriber_type = ] N'subscriber_type'

Тип подписчика. @subscriber_type — nvarchar(15) и может быть одним из следующих значений.

значение Описание
local (по умолчанию) Подписчик известен только издателю.
global Подписчик известен всем серверам.

В SQL Server 2005 (9.x) и более поздних версиях локальные подписки называются клиентскими подписками, а глобальные подписки называются серверными подписками.

[ @subscription_priority = ] subscription_priority

Число, указывающее приоритет подписки. @subscription_priority является реальным, с значением по умолчаниюNULL. Для локальных и анонимных подписок приоритет имеет 0.0значение. Для глобальных подписок приоритет должен быть меньше 100.0.

[ @sync_type = ] N'sync_type'

Тип синхронизации подписки. @sync_type — nvarchar(15) с значением по умолчаниюautomatic.

  • Если automaticсначала схема и начальные данные для опубликованных таблиц передаются подписчику.
  • Если noneпредполагается, что подписчик уже имеет схему и начальные данные для опубликованных таблиц. Системные таблицы и данные переносятся всегда.

Примечание.

Рекомендуется не указывать значение none.

[ @frequency_type = ] frequency_type

Значение, указывающее, когда выполняется агент слияния. @frequency_type является int и может быть одним из следующих значений.

значение Описание
1 Однократно
4 Ежедневно
8 Weekly (Еженедельно);
10 Ежемесячная
20 Ежемесячно, в соответствии с заданным интервалом
40 При запуске агент SQL Server
NULL (по умолчанию)

[ @frequency_interval = ] frequency_interval

День или дни запуска агента слияния. @frequency_interval является int и может быть одним из следующих значений.

значение Описание
1 Воскресенье
2 Понедельник
3 Вторник
4 Среда
5 Четверг
6 Пятница
7 Суббота
8 день
9 По рабочим дням
10 По выходным дням
NULL (по умолчанию)

[ @frequency_relative_interval = ] frequency_relative_interval

Запланированное слияние вхождения интервала частоты в каждом месяце. @frequency_relative_interval является int и может быть одним из этих значений.

значение Описание
1 First
2 Second
4 Третья
8 Четвертая
16 Last
NULL (по умолчанию)

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

Коэффициент повторения, используемый @frequency_type. @frequency_recurrence_factor имеет значение int с значением по умолчаниюNULL.

[ @frequency_subday = ] frequency_subday

Единица для @frequency_subday_interval. @frequency_subday имеет значение int и может быть одним из следующих значений.

значение Описание
1 Однократно
2 Second
4 Minute
8 Часы
NULL (по умолчанию)

[ @frequency_subday_interval = ] frequency_subday_interval

Частота @frequency_subday между каждым слиянием. @frequency_subday_interval имеет значение int с значением по умолчаниюNULL.

[ @active_start_time_of_day = ] active_start_time_of_day

Время дня, когда агент слияния впервые запланировано, отформатировано как HHmmss. @active_start_time_of_day имеет значение int с значением по умолчаниюNULL.

[ @active_end_time_of_day = ] active_end_time_of_day

Время дня, когда агент слияния перестает планироваться, форматируется как HHmmss. @active_end_time_of_day имеет значение int с значением по умолчаниюNULL.

[ @active_start_date = ] active_start_date

Дата, когда агент слияния впервые запланирована, отформатирована как yyyyMMdd. @active_start_date имеет значение int с значением по умолчаниюNULL.

[ @active_end_date = ] active_end_date

Дата, когда агент слияния перестает планироваться, отформатирована как yyyyMMdd. @active_end_date имеет значение int с значением по умолчаниюNULL.

[ @optional_command_line = ] N'optional_command_line'

Необязательная командная строка для выполнения. @optional_command_line — nvarchar(4000) с значением по умолчаниюNULL. Этот параметр используется для добавления команды, которая захватывает выходной поток и сохраняет его в файл либо для указания файла конфигурации или атрибута.

[ @description = ] N'description'

Краткое описание этой подписки слияния. @description имеет значение nvarchar(255) с значением по умолчаниюNULL. Это значение отображается монитором репликации в столбце Friendly Name , который можно использовать для сортировки подписок для отслеживаемой публикации.

[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'

Указывает, можно ли синхронизировать подписку с помощью диспетчера синхронизации Microsoft Windows. @enabled_for_syncmgr — nvarchar(5) с значением по умолчаниюfalse.

  • Если falseподписка не зарегистрирована в диспетчере синхронизации.
  • Если trueподписка зарегистрирована в диспетчере синхронизации и может быть синхронизирована без запуска SQL Server Management Studio.

[ @offloadagent = ] offloadagent

Указывает на то, что агент может быть активирован удаленно. @offloadagent бит с значением по умолчанию0.

Этот параметр устарел и поддерживается для обратной совместимости скриптов.

[ @offloadserver = ] N'offloadserver'

Указывает сетевое имя сервера, используемого для удаленной активации агента. @offloadserver имеет имя sysname с значением по умолчаниюNULL.

[ @use_interactive_resolver = ] N'use_interactive_resolver'

Возможно разрешение конфликтов в интерактивном режиме для всех статей, которые позволяют разрешение конфликтов в интерактивном режиме. @use_interactive_resolver — nvarchar(5) с значением по умолчаниюfalse.

[ @merge_job_name = ] N'merge_job_name'

Этот параметр устарел и не может быть задан. @merge_job_name — sysname с значением по умолчаниюNULL.

[ @hostname = ] N'hostname'

Переопределяет значение, возвращаемое HOST_NAME , если эта функция используется в предложении WHERE параметризованного фильтра. @hostname имеет имя sysname с значением по умолчаниюNULL.

Внимание

Для обеспечения высокой производительности не рекомендуется применять функции к именам столбцов в выражениях параметризованных фильтров строк, таких как LEFT([MyColumn]) = SUSER_SNAME(). Если вы используете HOST_NAME в предложении фильтра и переопределяете значение HOST_NAME , может потребоваться преобразовать типы данных с помощью CONVERT. Дополнительные сведения о рекомендациях по этому делу см. в разделе "Переопределение значения HOST_NAME() в разделе Параметризованные фильтры — параметризованные фильтры строк.

Значения кода возврата

0 (успешно) или 1 (сбой).

Замечания

sp_addmergesubscription используется в репликации слиянием.

При sp_addmergesubscription выполнении членом предопределенной роли сервера sysadmin для создания принудительной подписки задание агент слияния неявно создается и выполняется в учетной записи службы агент SQL Server. Рекомендуется выполнить sp_addmergepushsubscription_agent и указать учетные данные другой учетной записи Windows, относящуюся к агенту, для @job_login и @job_password. Дополнительные сведения см. в статье Replication Agent Security Model.

Примеры

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

Разрешения

Могут выполняться только члены предопределенных ролей сервера sysadmin или db_owner предопределенных ролей базы данных.sp_addmergesubscription