sp_addpullsubscription_agent (Transact-SQL)

Применимо к:SQL Server Управляемый экземпляр SQL Azure

Добавляет новое запланированное задание агента, используемое для синхронизации подписки по запросу с публикацией транзакций. Эта хранимая процедура выполняется на подписчике в базе данных подписки.

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

Синтаксис

sp_addpullsubscription_agent
    [ @publisher = ] N'publisher'
    [ , [ @publisher_db = ] N'publisher_db' ]
    , [ @publication = ] N'publication'
    [ , [ @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' ]
    [ , [ @distribution_db = ] N'distribution_db' ]
    [ , [ @distributor_security_mode = ] distributor_security_mode ]
    [ , [ @distributor_login = ] N'distributor_login' ]
    [ , [ @distributor_password = ] N'distributor_password' ]
    [ , [ @optional_command_line = ] N'optional_command_line' ]
    [ , [ @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 ]
    [ , [ @distribution_jobid = ] distribution_jobid OUTPUT ]
    [ , [ @encrypted_distributor_password = ] encrypted_distributor_password ]
    [ , [ @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' ]
    [ , [ @publication_type = ] publication_type ]
    [ , [ @dts_package_name = ] N'dts_package_name' ]
    [ , [ @dts_package_password = ] N'dts_package_password' ]
    [ , [ @dts_package_location = ] N'dts_package_location' ]
    [ , [ @reserved = ] N'reserved' ]
    [ , [ @offloadagent = ] N'offloadagent' ]
    [ , [ @offloadserver = ] N'offloadserver' ]
    [ , [ @job_name = ] N'job_name' ]
    [ , [ @job_login = ] N'job_login' ]
    [ , [ @job_password = ] N'job_password' ]
[ ; ]

Аргументы

[ @publisher = ] N'publisher'

Имя издателя. @publisher — sysname без значения по умолчанию.

Примечание.

Имя сервера можно указать как <Hostname>,<PortNumber>. Укажите номер порта для подключения при развертывании SQL Server в Linux или Windows с пользовательским портом, а служба браузера отключена. Использование пользовательских номеров портов для удаленного распространителя применяется к SQL Server 2019 (15.x) и более поздним версиям.

[ @publisher_db = ] N'publisher_db'

Имя базы данных издателя. @publisher_db имеет имя sysname с значением по умолчаниюNULL. @publisher_db игнорируется издателями Oracle.

[ @publication = ] N'publication'

Имя публикации. @publication — sysname без значения по умолчанию.

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

Имя экземпляра подписчика или имя прослушивателя группы доступности, если база данных подписчика находится в группе доступности. @subscriber — sysname с значением по умолчаниюNULL.

Примечание.

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

При запуске sp_addpullsubscription_agent для подписчика, который является частью группы доступности, задайте @subscriber имя прослушивателя группы доступности. При запуске SQL Server 2016 (13.x) и более ранних версий или SQL Server 2017 (14.x) до накопительного пакета обновления 16 хранимая процедура выполняется без возврата ошибки, но параметр @subscriber в агент распространения репликации не ссылается на имя прослушивателя группы доступности; параметр создается с именем сервера подписчика, на котором выполняется команда. Чтобы изменить эту проблему, вручную обновите задание агент распространения@subscriber значением имени прослушивателя группы доступности.

[ @subscriber_db = ] N'subscriber_db'

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

Примечание.

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

[ @subscriber_security_mode = ] subscriber_security_mode

Режим безопасности, используемый при подключении к подписчику при синхронизации. @subscriber_security_mode имеет значение int с значением по умолчаниюNULL.

  • 0 указывает проверку подлинности SQL Server
  • 1указывает проверка подлинности Windows

Примечание.

Этот параметр устарел и поддерживается для обратной совместимости скриптов. Агент распространителя всегда подключается к локальному подписчику с использованием проверки подлинности Windows. Если значение, отличное NULL от указанного 1 для этого параметра, возвращается предупреждение.

[ @subscriber_login = ] N'subscriber_login'

Имя входа подписчика, используемое при подключении к подписчику при синхронизации. @subscriber_login — sysname с значением по умолчаниюNULL.

Примечание.

Этот параметр устарел и поддерживается для обратной совместимости скриптов. Если для этого аргумента указывается значение, то выдается предупреждающее сообщение, а значение не обрабатывается.

[ @subscriber_password = ] N'subscriber_password'

Пароль подписчика. subscriber_password требуется, если для subscriber_security_mode задано значение 0. @subscriber_password — sysname с значением по умолчаниюNULL. Если используется пароль подписчика, он автоматически шифруется.

Примечание.

Этот параметр устарел и поддерживается для обратной совместимости скриптов. Если для этого аргумента указывается значение, то выдается предупреждающее сообщение, а значение не обрабатывается.

[ @distributor = ] N'distributor'

Имя распространителя. @distributor — sysname, значение по умолчанию, указанное @publisher.

[ @distribution_db = ] N'distribution_db'

Имя базы данных распространителя. @distribution_db имеет имя sysname с значением по умолчаниюNULL.

[ @distributor_security_mode = ] distributor_security_mode

Примечание.

Идентификатор Microsoft Entra ранее был известен как Azure Active Directory (Azure AD).

Режим безопасности, используемый при подключении к распространителю при синхронизации. @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 требуется, если для distributor_security_mode задано 0значение . @distributor_password — sysname с значением по умолчаниюNULL.

Внимание

Не используйте пустые пароли. Выбирайте надежные пароли. По возможности предлагайте пользователям вводить учетные данные системы безопасности во время выполнения приложения. В случае необходимости хранения учетных данных в файле скрипта этот файл следует защищать во избежание несанкционированного доступа.

[ @optional_command_line = ] N'optional_command_line'

Необязательная командная строка, предоставленная агент распространения. Например, -DefinitionFile C:\Distdef.txt или -CommitBatchSize 10. @optional_command_line — nvarchar(4000) с пустой строкой по умолчанию.

[ @frequency_type = ] frequency_type

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

значение Описание
1 Один раз.
2 (по умолчанию) по запросу
4 Ежедневно
8 Weekly (Еженедельно);
16 Ежемесячная
32 Ежемесячно с относительной датой
64 Автозапуск
128 Повторяющееся задание

Примечание.

Указание значения приводит к тому, 64 что агент распространения выполняться в непрерывном режиме. Это соответствует настройке -Continuous параметра для агента. Дополнительные сведения см. в статье Replication Distribution Agent.

[ @frequency_interval = ] frequency_interval

Значение, применяемое к частоте, заданной @frequency_type. @frequency_interval имеет значение int с значением по умолчанию1.

[ @frequency_relative_interval = ] frequency_relative_interval

Дата агент распространения. Этот параметр используется, если @frequency_type задано 32 значение (ежемесячное относительное). @frequency_relative_interval имеет значение int и может быть одним из следующих значений.

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

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

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

[ @frequency_subday = ] frequency_subday

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

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

[ @frequency_subday_interval = ] frequency_subday_interval

Интервал для @frequency_subday. @frequency_subday_interval имеет значение int с значением по умолчанию1.

[ @active_start_time_of_day = ] active_start_time_of_day

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

[ @active_end_time_of_day = ] active_end_time_of_day

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

[ @active_start_date = ] active_start_date

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

[ @active_end_date = ] active_end_date

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

[ @distribution_jobid = ] distribution_jobid OUTPUT

Идентификатор агент распространения для этого задания. @distribution_jobid — это параметр OUTPUT типа binary(16) с значением по умолчаниюNULL.

[ @encrypted_distributor_password = ] encrypted_distributor_password

@encrypted_distributor_password бит с значением по умолчанию0.

Примечание.

Настройка @encrypted_distributor_password больше не поддерживается. Попытка задать этот битовый параметр 1 приведет к ошибке.

[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'

Указывает, может ли подписка быть синхронизирована с помощью Диспетчера синхронизации Майкрософт. @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.

[ @working_directory = ] N'working_directory'

Имя рабочего каталога, используемого для хранения файлов данных и схем для публикации. @working_directory — nvarchar(255) с значением по умолчаниюNULL. Имя должно быть задано в формате UNC.

[ @use_ftp = ] N'use_ftp'

Указывает использование протокола FTP вместо обычного протокола для получения моментальных снимков. @use_ftp — nvarchar(5) с значением по умолчаниюfalse.

[ @publication_type = ] publication_type

Задает тип репликации для публикации. @publication_type крошечный, с по умолчанию 0.

  • Если 0публикация является типом транзакции.
  • Если 1публикация — это тип моментального снимка.
  • Если 2публикация является типом слияния.

[ @dts_package_name = ] N'dts_package_name'

Указывает имя пакета DTS. @dts_package_name — sysname с значением по умолчаниюNULL. Например, для задания пакета DTSPub_Package параметр должен быть равен @dts_package_name = N'DTSPub_Package'.

[ @dts_package_password = ] N'dts_package_password'

Задает пароль для пакета, если он имеется. @dts_package_password имеет имя sysname с значением по умолчаниюNULL, что означает, что пароль не находится в пакете.

Примечание.

Если указан @dts_package_name, необходимо указать пароль.

[ @dts_package_location = ] N'dts_package_location'

Указывает местоположение пакета. @dts_package_location — nvarchar(12) с значением по умолчаниюsubscriber. Расположение пакета может быть distributor или subscriber.

[ @reserved = ] N'reserved'

Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.

[ @offloadagent = ] N'offloadagent'

Этот параметр устарел и поддерживается для обратной совместимости скриптов. Если для этого аргумента указывается значение, то выдается предупреждающее сообщение, а значение не обрабатывается. Установка @offloadagent в значение, отличное от false ошибки.

[ @offloadserver = ] N'offloadserver'

Этот параметр устарел и поддерживается для обратной совместимости скриптов. Если для этого аргумента указывается значение, то выдается предупреждающее сообщение, а значение не обрабатывается. Установка @offloadserver в значение, отличное от false ошибки.

[ @job_name = ] N'job_name'

Имя существующего задания агента. @job_name — sysname с значением по умолчаниюNULL. Этот аргумент указывается, только если подписка будет синхронизироваться с использованием существующего задания, а не вновь созданного (выбор по умолчанию). Если вы не входите в предопределяемую роль сервера sysadmin , необходимо указать @job_login и @job_password при указании @job_name.

[ @job_login = ] N'job_login'

Имя входа для учетной записи Windows, в которой выполняется агент. @job_login — nvarchar(257), без значения по умолчанию. Для соединений агента с подписчиком всегда используется эта учетная запись Windows.

[ @job_password = ] N'job_password'

Пароль для учетной записи Windows, в которой выполняется агент. @job_password — sysname, без значения по умолчанию.

Внимание

Не используйте пустые пароли. Выбирайте надежные пароли. По возможности предлагайте пользователям вводить учетные данные системы безопасности во время выполнения приложения. В случае необходимости хранения учетных данных в файле скрипта этот файл следует защищать во избежание несанкционированного доступа.

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

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

Замечания

sp_addpullsubscription_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;
SET @publication = N'AdvWorksProductTran';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks2022';

-- At the subscription database, create a pull subscription 
-- to a transactional publication.
USE [AdventureWorks2022Replica]
EXEC sp_addpullsubscription 
  @publisher = @publisher, 
  @publication = @publication, 
  @publisher_db = @publicationDB;

-- Add an agent job to synchronize the pull subscription.
EXEC sp_addpullsubscription_agent 
  @publisher = @publisher, 
  @publisher_db = @publicationDB, 
  @publication = @publication, 
  @distributor = @publisher, 
  @job_login = $(Login), 
  @job_password = $(Password);
GO

Разрешения

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