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