sp_addmergesubscription (Transact-SQL)

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

Значок ссылки на разделСинтаксические обозначения в 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.