sp_addmergepullsubscription_agent (Transact-SQL)
Область применения: SQL Server Управляемый экземпляр SQL Azure
Добавляет новое задание агента для планирования синхронизации подписки по запросу на публикацию слиянием. Эта хранимая процедура выполняется на подписчике в базе данных подписки.
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_addmergepullsubscription_agent
[ [ @name = ] N'name' ]
, [ @publisher = ] N'publisher'
, [ @publisher_db = ] N'publisher_db'
, [ @publication = ] N'publication'
[ , [ @publisher_security_mode = ] publisher_security_mode ]
[ , [ @publisher_login = ] N'publisher_login' ]
[ , [ @publisher_password = ] N'publisher_password' ]
[ , [ @publisher_encrypted_password = ] publisher_encrypted_password ]
[ , [ @subscriber = ] N'subscriber' ]
[ , [ @subscriber_db = ] N'subscriber_db' ]
[ , [ @subscriber_security_mode = ] subscriber_security_mode ]
[ , [ @subscriber_login = ] N'subscriber_login' ]
[ , [ @subscriber_password = ] N'subscriber_password' ]
[ , [ @distributor = ] N'distributor' ]
[ , [ @distributor_security_mode = ] distributor_security_mode ]
[ , [ @distributor_login = ] N'distributor_login' ]
[ , [ @distributor_password = ] N'distributor_password' ]
[ , [ @encrypted_password = ] encrypted_password ]
[ , [ @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' ]
[ , [ @merge_jobid = ] merge_jobid OUTPUT ]
[ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
[ , [ @ftp_address = ] N'ftp_address' ]
[ , [ @ftp_port = ] ftp_port ]
[ , [ @ftp_login = ] N'ftp_login' ]
[ , [ @ftp_password = ] N'ftp_password' ]
[ , [ @alt_snapshot_folder = ] N'alt_snapshot_folder' ]
[ , [ @working_directory = ] N'working_directory' ]
[ , [ @use_ftp = ] N'use_ftp' ]
[ , [ @reserved = ] N'reserved' ]
[ , [ @use_interactive_resolver = ] N'use_interactive_resolver' ]
[ , [ @offloadagent = ] N'offloadagent' ]
[ , [ @offloadserver = ] N'offloadserver' ]
[ , [ @job_name = ] N'job_name' ]
[ , [ @dynamic_snapshot_location = ] N'dynamic_snapshot_location' ]
[ , [ @use_web_sync = ] use_web_sync ]
[ , [ @internet_url = ] N'internet_url' ]
[ , [ @internet_login = ] N'internet_login' ]
[ , [ @internet_password = ] N'internet_password' ]
[ , [ @internet_security_mode = ] internet_security_mode ]
[ , [ @internet_timeout = ] internet_timeout ]
[ , [ @hostname = ] N'hostname' ]
[ , [ @job_login = ] N'job_login' ]
[ , [ @job_password = ] N'job_password' ]
[ ; ]
Аргументы
[ @name = ] N'name'
Имя агента. @name имеет имя sysname с значением по умолчаниюNULL
.
[ @publisher = ] N'publisher'
Имя сервера издателя. @publisher — sysname без значения по умолчанию.
[ @publisher_db = ] N'publisher_db'
Имя базы данных издателя. @publisher_db — sysname без значения по умолчанию.
[ @publication = ] N'publication'
Имя публикации. @publication — sysname без значения по умолчанию.
[ @publisher_security_mode = ] publisher_security_mode
Режим безопасности, используемый при подключении к издателю при синхронизации. @publisher_security_mode имеет значение int с значением по умолчанию1
. Следующие значения определяют режим безопасности:
0
указывает проверку подлинности SQL Server.1
указывает проверка подлинности Windows.2
указывает проверку подлинности паролей Microsoft Entra, начиная с SQL Server 2022 (16.x) CU 6.3
указывает встроенную проверку подлинности Microsoft Entra, начиная с SQL Server 2022 (16.x) CU 6.
Внимание
По возможности используйте аутентификацию Windows.
[ @publisher_login = ] N'publisher_login'
Имя входа, используемое при подключении к издателю при синхронизации. @publisher_login — sysname с значением по умолчаниюNULL
.
[ @publisher_password = ] N'publisher_password'
Пароль, используемый при подключении к издателю. @publisher_password — sysname с значением по умолчаниюNULL
.
Внимание
Не используйте пустые пароли. Выбирайте надежные пароли. По возможности предлагайте пользователям вводить учетные данные системы безопасности во время выполнения приложения. В случае необходимости хранения учетных данных в файле скрипта этот файл следует защищать во избежание несанкционированного доступа.
[ @publisher_encrypted_password = ] publisher_encrypted_password
Настройка @publisher_encrypted_password больше не поддерживается. Попытка задать этот битовый параметр, который приведет к 1
ошибке.
[ @subscriber = ] N'подписчик'
Имя подписчика. @subscriber — sysname с значением по умолчаниюNULL
.
[ @subscriber_db = ] N'subscriber_db'
Имя базы данных подписки. @subscriber_db — sysname с значением по умолчаниюNULL
.
[ @subscriber_security_mode = ] subscriber_security_mode
Режим безопасности, используемый при подключении к подписчику при синхронизации. @subscriber_security_mode имеет значение int с значением по умолчанию1
. Если 0
указывает проверку подлинности SQL Server. Если 1
указывает проверку подлинности Windows.
Примечание.
Этот параметр устарел и поддерживается для обратной совместимости скриптов. Если для этого аргумента указывается значение, то выдается предупреждающее сообщение, а значение не обрабатывается.
[ @subscriber_login = ] N'subscriber_login'
Имя входа подписчика, используемое при подключении к подписчику при синхронизации. @subscriber_login — sysname с значением по умолчаниюNULL
. @subscriber_login требуется, если для subscriber_security_mode задано значение 0
.
Примечание.
Этот параметр устарел и поддерживается для обратной совместимости скриптов. Если для этого аргумента указывается значение, то выдается предупреждающее сообщение, а значение не обрабатывается.
[ @subscriber_password = ] N'subscriber_password'
Пароль подписчика для проверки подлинности SQL Server. @subscriber_password — sysname с значением по умолчаниюNULL
. @subscriber_password требуется, если для @subscriber_security_mode задано значение 0
.
Примечание.
Этот параметр устарел и поддерживается для обратной совместимости скриптов. Если для этого аргумента указывается значение, то выдается предупреждающее сообщение, а значение не обрабатывается.
[ @distributor = ] N'distributor'
Имя распространителя. @distributor — sysname, с @publisher по умолчанию; то есть издатель также является распространителем.
[ @distributor_security_mode = ] distributor_security_mode
Режим безопасности, используемый при подключении к распространителю при синхронизации. @distributor_security_mode имеет значение int с значением по умолчанию1
. Следующие значения определяют режим безопасности:
0
указывает проверку подлинности SQL Server.1
указывает проверка подлинности Windows.2
указывает проверку подлинности паролей Microsoft Entra, начиная с SQL Server 2022 (16.x) CU 6.3
указывает встроенную проверку подлинности Microsoft Entra, начиная с SQL Server 2022 (16.x) CU 6.4
указывает проверку подлинности маркера Microsoft Entra, начиная с SQL Server 2022 (16.x) CU 6.
Внимание
По возможности используйте аутентификацию Windows.
[ @distributor_login = ] N'distributor_login'
Имя входа распространителя, используемое при подключении к распространителю при синхронизации. @distributor_login — sysname, значение по умолчанию NULL
— sysname. @distributor_login требуется, если для @distributor_security_mode задано 0
значение .
[ @distributor_password = ] N'distributor_password'
Пароль распространителя. @distributor_password — sysname с значением по умолчаниюNULL
. @distributor_password требуется, если для @distributor_security_mode задано 0
значение .
Внимание
Не используйте пустые пароли. Выбирайте надежные пароли. По возможности предлагайте пользователям вводить учетные данные системы безопасности во время выполнения приложения. В случае необходимости хранения учетных данных в файле скрипта этот файл следует защищать во избежание несанкционированного доступа.
[ @encrypted_password = ] encrypted_password
Настройка @encrypted_password больше не поддерживается. Попытка задать этот битовый параметр, который приведет к 1
ошибке.
[ @frequency_type = ] frequency_type
Значение, указывающее, когда выполняется агент слияния. @frequency_type является int и может быть одним из этих значений.
значение | Описание |
---|---|
1 |
Один раз. |
2 |
по запросу |
4 |
Ежедневно |
8 |
Weekly (Еженедельно); |
16 |
Ежемесячная |
32 |
Ежемесячно с относительной датой |
64 |
Автозапуск |
128 |
Повторяющееся задание |
NULL (по умолчанию) |
Примечание.
Указание значения приводит к тому, 64
что агент слияния выполняться в непрерывном режиме. Это соответствует настройке -Continuous
параметра для агента. Дополнительные сведения см. в статье Replication Merge Agent.
[ @frequency_interval = ] frequency_interval
День или дни запуска агента слияния. @frequency_interval имеет значение int с значением по умолчанию NULL
и может быть одним из этих значений.
значение | Описание |
---|---|
1 |
Воскресенье |
2 |
Понедельник |
3 |
Вторник |
4 |
Среда |
5 |
Четверг |
6 |
Пятница |
7 |
Суббота |
8 |
день |
9 |
По рабочим дням |
10 |
По выходным дням |
NULL (по умолчанию) |
[ @frequency_relative_interval = ] frequency_relative_interval
Дата агент слияния. Этот параметр используется, если @frequency_type задано 32
значение (ежемесячное относительное). @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 является 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(255) с пустой строкой по умолчанию.
Может использоваться для передачи агенту слияния дополнительных параметров. Следующий пример иллюстрирует увеличение времени ожидания выполнения запроса по умолчанию до 600
секунд.
@optional_command_line = N'-QueryTimeOut 600'
[ @merge_jobid = ] merge_jobid OUTPUT
Выходной параметр для идентификатора задания. @merge_jobid — это параметр OUTPUT типа binary(16) с значением по умолчаниюNULL
.
[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'
Указывает, может ли подписка быть синхронизирована с помощью диспетчера синхронизации Windows. @enabled_for_syncmgr — nvarchar(5) с значением по умолчаниюfalse
. Если false
подписка не зарегистрирована в диспетчере синхронизации. Если true
подписка зарегистрирована в диспетчере синхронизации и может быть синхронизирована без запуска SQL Server Management Studio.
[ @ftp_address = ] N'ftp_address'
Этот параметр устарел и поддерживается для обратной совместимости скриптов.
[ @ftp_port = ] ftp_port
Этот параметр устарел и поддерживается для обратной совместимости скриптов.
[ @ftp_login = ] N'ftp_login'
Этот параметр устарел и поддерживается для обратной совместимости скриптов.
[ @ftp_password = ] N'ftp_password'
Этот параметр устарел и поддерживается для обратной совместимости скриптов.
[ @alt_snapshot_folder = ] N'alt_snapshot_folder'
Указывает расположение, откуда извлекаются файлы моментальных снимков. @alt_snapshot_folder — nvarchar(255) с значением по умолчаниюNULL
. Если NULL
файлы моментальных снимков будут выбраны из расположения по умолчанию, указанного издателем.
[ @working_directory = ] N'working_directory'
Имя рабочего каталога, используемого для временного хранения данных и файлов схемы публикации при использовании FTP для передачи файлов моментальных снимков. @working_directory — nvarchar(255) с значением по умолчаниюNULL
.
[ @use_ftp = ] N'use_ftp'
Указывает на использование протокола FTP вместо обычного протокола для получения моментальных снимков. @use_ftp — nvarchar(5) с значением по умолчаниюfalse
.
[ @reserved = ] N'reserved'
Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
[ @use_interactive_resolver = ] N'use_interactive_resolver'
Использует интерактивный арбитр конфликтов для всех статей, для которых применим интерактивный арбитр конфликтов. @use_interactive_resolver — nvarchar(5) с значением по умолчаниюfalse
.
[ @offloadagent = ] N'offloadagent'
Примечание.
Этот параметр устарел и поддерживается для обратной совместимости скриптов. Установка remote_agent_activation в значение, отличное от false
ошибки.
[ @offloadserver = ] N'offloadserver'
Примечание.
Этот параметр устарел и поддерживается для обратной совместимости скриптов. При установке remote_agent_server_name любое значение, отличное от NULL, возникает ошибка.
[ @job_name = ] N'job_name'
Имя существующего задания агента. @job_name — sysname с значением по умолчаниюNULL
. Этот аргумент указывается только тогда, когда подписка будет синхронизироваться с использованием существующего задания, а не вновь создаваемого задания (выбор по умолчанию). Если вы не входите в предопределяемую роль сервера sysadmin , необходимо указать @job_login и @job_password при указании @job_name.
[ @dynamic_snapshot_location = ] N'dynamic_snapshot_location'
Путь к папке, из которой будут считываться файлы моментальных снимков, при использовании моментального снимка фильтруемых данных. @dynamic_snapshot_location — nvarchar(260) с значением по умолчаниюNULL
. Дополнительные сведения см. в разделе "Параметризованные фильтры" — параметризованные фильтры строк.
[ @use_web_sync = ] use_web_sync
Указывает, включена ли веб-синхронизация. @use_web_sync бит с значением по умолчанию0
. 1
указывает, что подписка на вытягивание может быть синхронизирована через Интернет с помощью HTTP.
[ @internet_url = ] N'internet_url'
Расположение прослушивателя репликации (REPLISAPI.DLL) для веб-синхронизации. @internet_url — nvarchar(260) с значением по умолчаниюNULL
. @internet_url — это полный URL-адрес в форматеhttp://server.domain.com/directory/replisapi.dll
. Если сервер настроен для прослушивания порта, отличного от 80-го, необходимо также задать номер порта в формате http://server.domain.com:<portnumber>/directory/replisapi.dll
, где <portnumber>
указывает номер порта.
[ @internet_login = ] N'internet_login'
Имя входа, которое используется агент слияния при подключении к веб-серверу, на котором размещена веб-синхронизация с помощью обычной проверки подлинности HTTP. @internet_login — sysname( значение по умолчанию NULL
).
[ @internet_password = ] N'internet_password'
Пароль, который агент слияния используется при подключении к веб-серверу, на котором размещена веб-синхронизация с помощью проверки подлинности HTTP Basic. @internet_password — nvarchar(524) с значением по умолчаниюNULL
.
Внимание
Не используйте пустые пароли. Выбирайте надежные пароли.
[ @internet_security_mode = ] internet_security_mode
Метод проверки подлинности, используемый агент слияния при подключении к веб-серверу во время веб-синхронизации с помощью HTTPS. @internet_security_mode является int и может быть одним из этих значений.
значение | Описание |
---|---|
0 |
Используется обычная проверка подлинности (проверка пароля и имени входа, входящая в протокол HTTP). |
1 (по умолчанию) |
Используется встроенная проверка подлинности Windows. |
Примечание.
При веб-синхронизации рекомендуется использовать обычную проверку подлинности. Чтобы использовать веб-синхронизацию, необходимо установить подключение TLS к веб-серверу. Дополнительные сведения см. в разделе Configure Web Synchronization.
[ @internet_timeout = ] internet_timeout
Продолжительность времени в секундах перед отменой запроса на веб-синхронизацию. @internet_timeout имеет значение int с значением 300
по умолчанию секунд.
[ @hostname = ] N'hostname'
Переопределяет значение HOST_NAME()
, когда эта функция используется в WHERE
предложении параметризованного фильтра. @hostname имеет имя sysname с значением по умолчаниюNULL
.
[ @job_login = ] N'job_login'
Имя входа для учетной записи Windows, в которой выполняется агент. @job_login — nvarchar(257) с значением по умолчаниюNULL
. Эта учетная запись Windows всегда используется при соединениях агента с подписчиком и соединениях с распространителем и издателем, когда применяется встроенная проверка подлинности Windows.
[ @job_password = ] N'job_password'
Пароль для учетной записи Windows, в которой выполняется агент. @job_password — sysname с значением по умолчаниюNULL
.
Внимание
Не сохраняйте сведения о проверке подлинности в файлах скриптов. Для обеспечения лучшей защиты имена входа и пароли должны вводиться в ходе выполнения.
Значения кода возврата
0
(успешно) или 1
(сбой).
Замечания
sp_addmergepullsubscription_agent
используется в репликации слиянием и использует функции, аналогичные sp_addpullsubscription_agent.
Пример правильного указания параметров безопасности при выполнении sp_addmergepullsubscription_agent
см. в разделе "Создание подписки на вытягивание".
Примеры
-- 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".
-- Execute this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks2022';
SET @hostname = N'adventure-works\david8';
-- At the subscription database, create a pull subscription
-- to a merge publication.
USE [AdventureWorks2022Replica]
EXEC sp_addmergepullsubscription
@publisher = @publisher,
@publication = @publication,
@publisher_db = @publicationDB;
-- Add an agent job to synchronize the pull subscription.
EXEC sp_addmergepullsubscription_agent
@publisher = @publisher,
@publisher_db = @publicationDB,
@publication = @publication,
@distributor = @publisher,
@job_login = $(Login),
@job_password = $(Password),
@hostname = @hostname;
GO
Разрешения
Могут выполняться только члены предопределенных ролей сервера sysadmin или db_owner предопределенных ролей базы данных.sp_addmergepullsubscription_agent