sp_addmergesubscription (Transact-SQL)
Создает подписку на принудительную публикацию слиянием или публикацию слиянием по запросу. Эта хранимая процедура выполняется на издателе в базе данных публикации.
Синтаксис
sp_addmergesubscription [ @publication= ] 'publication'
[ , [ @subscriber = ] 'subscriber' ]
[ , [ @subscriber_db= ] 'subscriber_db' ]
[ , [ @subscription_type= ] 'subscription_type' ]
[ , [ @subscriber_type= ] 'subscriber_type' ]
[ , [ @subscription_priority= ] subscription_priority ]
[ , [ @sync_type= ] '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= ] 'optional_command_line' ]
[ , [ @description= ] 'description' ]
[ , [ @enabled_for_syncmgr= ] 'enabled_for_syncmgr' ]
[ , [ @offloadagent= ] remote_agent_activation]
[ , [ @offloadserver= ] 'remote_agent_server_name' ]
[ , [ @use_interactive_resolver= ] 'use_interactive_resolver' ]
[ , [ @merge_job_name= ] 'merge_job_name' ]
[ , [ @hostname = ] 'hostname'
Аргументы
[ @publication=] 'publication'
Имя публикации. Аргумент publication имеет тип sysname и не имеет значения по умолчанию. Публикация уже должна существовать.[ @subscriber =] 'subscriber'
Имя подписчика. Аргумент subscriber имеет тип sysname и значение по умолчанию NULL.[ @subscriber_db=] 'subscriber_db'
Имя базы данных подписки. Аргумент subscriber_db имеет тип sysname и значение по умолчанию NULL.[ @subscription_type=] 'subscription_type'
Тип подписки. Аргумент subscription_type имеет тип nvarchar(15) и значение по умолчанию PUSH. Если указано значение push, то создается принудительная подписка, а на распространителе добавляется агент слияния. Если указано значение pull, то добавляется подписка по запросу, а агент слияния на распространителе не добавляется.Примечание Анонимные подписки не нуждаются в использовании этой хранимой процедуры.
[ @subscriber_type=] 'subscriber_type'
Тип подписчика. Аргумент subscriber_type имеет тип nvarchar(15) и может принимать одно из следующих значений.Значение
Описание
local (по умолчанию)
Подписчик известен только издателю.
global
Подписчик известен всем серверам.
В SQL Server 2005 и более поздних версиях локальные подписки называются клиентскими подписками, а глобальные подписки — серверными подписками. Дополнительные сведения см. в подразделе «Типы подписок» раздела Способы обнаружения и разрешения конфликтов, используемые при репликации слиянием.
[ @subscription_priority=] subscription_priority
Число, означающее приоритет подписки. Аргумент subscription_priority имеет тип real и значение по умолчанию NULL. Для локальных и анонимных подписок приоритет равен 0,0. Для глобальных подписок приоритет должен быть меньше чем 100,0.[ @sync_type=] 'sync_type'
Тип синхронизации подписки. Аргумент sync_type имеет тип nvarchar(15) и значение по умолчанию automatic. Возможны следующие варианты: automatic или none. При значении automatic схема и исходные данные для опубликованных таблиц передаются подписчику в первую очередь. При значении none предполагается, что подписчик уже имеет схему и исходные данные для опубликованных таблиц. Системные таблицы и данные переносятся всегда.Примечание Задавать значение none не рекомендуется. Дополнительные сведения см. в разделе Инициализация подписки на публикацию слиянием без моментального снимка.
[ @frequency_type=] frequency_type
Значение, указывающее режим работы агента слияния. Аргумент frequency_type имеет тип int и может принимать одно из следующих значений.Значение
Описание
1
Однократно.
4
Ежедневно
8
Еженедельно
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
Первый
2
Секунда
4
Третья
8
Четвертая
16
Последний
Значение 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
Секунда
4
Минута
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
Время первого запуска агента слияния в формате «ЧЧММСС». Аргумент active_start_time_of_day имеет тип int и значение по умолчанию NULL.[ @active_end_time_of_day=] active_end_time_of_day
Время плановой остановки агента слияния в формате «ЧЧММСС». Аргумент active_end_time_of_day имеет тип int и значение по умолчанию NULL.[ @active_start_date=] active_start_date
Дата первого запуска агента слияния в формате «ГГГГММДД». Аргумент active_start_date имеет тип int и значение по умолчанию NULL.[ @active_end_date=] active_end_date
Дата плановой остановки агента слияния в формате «ГГГГММДД». Аргумент active_end_date имеет тип int и значение по умолчанию NULL.[ @optional_command_line=] 'optional_command_line'
Необязательное приглашение к вводу команды. Аргумент optional_command_line имеет тип nvarchar(4000) и значение по умолчанию NULL. Этот параметр используется для добавления команды, которая захватывает выходной поток и сохраняет его в файл либо для указания файла конфигурации или атрибута.[ @description=] 'description'
Краткое описание подписки на публикацию слиянием. Аргумент description имеет тип nvarchar(255) и значение по умолчанию NULL. Значение отображается в мониторе репликации в столбце Понятное имя, который может использоваться для сортировки подписок на контролируемые публикации.[ @enabled_for_syncmgr=] 'enabled_for_syncmgr'
Указывает, может ли подписка синхронизироваться с помощью диспетчера синхронизации Microsoft Windows. Аргумент enabled_for_syncmgr имеет тип nvarchar(5) и значение по умолчанию FALSE. При значении false подписка диспетчером синхронизации не регистрируется. При значении true подписка регистрируется диспетчером синхронизации и может быть синхронизирована без запуска среды Microsoft Среда SQL Server Management Studio.[ @offloadagent= ] remote_agent_activation
Указывает, что агент может быть активирован удаленно. Аргумент remote_agent_activation имеет тип bit и значение по умолчанию 0.Примечание Этот аргумент является устаревшим и сохраняется только для поддержки обратной совместимости.
[ @offloadserver= ] 'remote_agent_server_name'
Определяет сетевое имя сервера, используемого для активации удаленного агента. Аргумент remote_agent_server_name имеет тип sysname и значение по умолчанию NULL.[ @use_interactive_resolver= ] 'use_interactive_resolver'
Позволяет интерактивное разрешение конфликтов для всех статей, которые допускают интерактивное разрешение. Аргумент use_interactive_resolver имеет тип nvarchar(5) и значение по умолчанию FALSE.[ @merge_job_name= ] 'merge_job_name'
Аргумент @merge_job_name устарел и не может быть указан. Аргумент merge_job_name имеет тип sysname и значение по умолчанию NULL.[ @hostname= ] '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 и указывать учетные данные @job_login и @job_password другой учетной записи Windows, специально выделенной для конкретного агента. Дополнительные сведения см. в разделе Модель безопасности агента репликации.
Пример
-- 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'AdventureWorks2008R2Replica';
SET @hostname = N'adventure-works\david8'
-- Add a push subscription to a merge publication.
USE [AdventureWorks2008R2]
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.
См. также