sp_addpullsubscription_agent (Transact-SQL)

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

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

Topic link iconСинтаксические обозначения в Transact-SQL

Синтаксис

  
sp_addpullsubscription_agent [ @publisher = ] 'publisher'  
    [ , [ @publisher_db = ] 'publisher_db' ]          , [ @publication = ] 'publication'  
    [ , [ @subscriber = ] 'subscriber' ]  
    [ , [ @subscriber_db = ] 'subscriber_db' ]  
    [ , [ @subscriber_security_mode = ] subscriber_security_mode ]  
    [ , [ @subscriber_login = ] 'subscriber_login' ]  
    [ , [ @subscriber_password = ] 'subscriber_password' ]  
    [ , [ @distributor = ] 'distributor' ]  
    [ , [ @distribution_db = ] 'distribution_db' ]  
    [ , [ @distributor_security_mode = ] distributor_security_mode ]  
    [ , [ @distributor_login = ] 'distributor_login' ]  
    [ , [ @distributor_password = ] 'distributor_password' ]  
    [ , [ @optional_command_line = ] '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 = ] 'enabled_for_syncmgr' ]  
    [ , [ @ftp_address = ] 'ftp_address' ]  
    [ , [ @ftp_port = ] ftp_port ]  
    [ , [ @ftp_login = ] 'ftp_login' ]  
    [ , [ @ftp_password = ] 'ftp_password' ]  
    [ , [ @alt_snapshot_folder = ] 'alternate_snapshot_folder' ]  
    [ , [ @working_directory = ] 'working_directory' ]  
    [ , [ @use_ftp = ] 'use_ftp' ]  
    [ , [ @publication_type = ] publication_type ]  
    [ , [ @dts_package_name = ] 'dts_package_name' ]  
    [ , [ @dts_package_password = ] 'dts_package_password' ]  
    [ , [ @dts_package_location = ] 'dts_package_location' ]  
    [ , [ @reserved = ] 'reserved' ]  
    [ , [ @offloadagent = ] 'remote_agent_activation' ]  
    [ , [ @offloadserver = ] 'remote_agent_server_name']  
    [ , [ @job_name = ] 'job_name' ]  
    [ , [ @job_login = ] 'job_login' ]   
    [ , [ @job_password = ] 'job_password' ]   

Аргументы

[ @publisher = ] 'publisher' Имя издателя. Publishersysname без значения по умолчанию.

Примечание

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

[ @publisher_db = ] 'publisher_db'_ Имя базы данных Издателя. publisher_dbsysname с значением NULL по умолчанию. publisher_db игнорируется издателями Oracle.

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

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

Примечание

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

Примечание

Данный аргумент является устаревшим и сохранен только для поддержки обратной совместимости скриптов.

[ @subscriber_db = ] 'subscriber_db' Имя базы данных подписки. subscriber_dbsysname с значением NULL по умолчанию.

Примечание

Данный аргумент является устаревшим и сохранен только для поддержки обратной совместимости скриптов.

[ @subscriber_security_mode = ] subscriber_security_mode Режим безопасности, используемый при подключении к подписчику при синхронизации. subscriber_security_mode имеет значение int с значением NULL по умолчанию. 0 указывает SQL Server аутентификации. 1 указывает проверку подлинности Windows.

Примечание

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

[ @subscriber_login = ] 'subscriber_login' Имя входа подписчика, используемое при подключении к подписчику при синхронизации. subscriber_loginsysname с значением NULL по умолчанию.

Примечание

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

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

Примечание

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

[ @distributor = ] 'distributor' Имя распространителя. распространительsysname с значением по умолчанию, указанным издателем.

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

[ @distributor_security_mode = ] distributor_security_mode Режим безопасности, используемый при подключении к распространителю при синхронизации. distributor_security_mode имеет значение int с значением по умолчанию 1. 0 указывает SQL Server аутентификации. 1 указывает проверку подлинности Windows.

Важно!

По возможности используйте аутентификацию Windows.

[ @distributor_login = ] 'distributor_login' Имя входа распространителя, используемое при подключении к распространителю при синхронизации. distributor_login является обязательным, если distributor_security_mode имеет значение 0. distributor_loginsysname с значением NULL по умолчанию.

[ @distributor_password = ] 'distributor_password' Пароль распространителя. distributor_password является обязательным, если для distributor_security_mode задано значение 0. distributor_passwordsysname с значением NULL по умолчанию.

Важно!

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

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

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

Значение Описание
1 Один раз.
2 (по умолчанию) По запросу
4 Ежедневно
8 Еженедельно
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 (по умолчанию) Первый
2 Второе
4 Третье
8 Четвертая
16 Последний

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

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

Значение Описание
1 (по умолчанию) Однократно
2 Второе
4 Минута
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Дата первого запланированного агент распространения в формате ГГГГММДД. active_start_date имеет значение int с значением по умолчанию 0.

[ @active_end_date = ] active_end_dateДата прекращения планирования агент распространения в формате ГГГГММДД. active_end_date имеет значение int с значением по умолчанию 0.

[ @distribution_jobid = ] _distribution_jobidOUTPUTИдентификатор агент распространения для этого задания. distribution_jobid является binary(16), по умолчанию имеет значение NULL, и это выходной параметр.

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

[ @enabled_for_syncmgr = ] 'enabled_for_syncmgr' Указывает, может ли подписка быть синхронизирована с помощью Microsoft Synchronization Manager. enabled_for_syncmgr имеет значение nvarchar(5) с значением по умолчанию FALSE. Если значение равно false, подписка не зарегистрирована в диспетчере синхронизации. Если значение равно true, подписка регистрируется в диспетчере синхронизации и может быть синхронизирована без запуска SQL Server Management Studio.

[ @ftp_address = ] 'ftp_address' Только для обратной совместимости.

[ @ftp_port = ] ftp_port Только для обратной совместимости.

[ @ftp_login = ] 'ftp_login' Только для обратной совместимости.

[ @ftp_password = ] 'ftp_password' Только для обратной совместимости.

[ @alt_snapshot_folder = ] 'alternate_snapshot_folder'_ Указывает расположение альтернативной папки для моментального снимка. alternate_snapshot_folder имеет значение nvarchar(255) со значением NULL.

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

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

[ @publication_type = ] publication_type Указывает тип репликации публикации. publication_type является tinyint с значением по умолчанию 0. Если значение равно 0, публикация является типом транзакции. Если значение равно 1, публикация является типом моментального снимка. Если значение равно 2, публикация является типом слияния.

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

[ @dts_package_password = ] 'dts_package_password' Указывает пароль в пакете, если он существует. dts_package_password имеет значение sysname со значением ПО умолчанию NULL, то есть пароль отсутствует в пакете.

Примечание

При указании dts_package_name необходимо указать пароль.

[ @dts_package_location = ] 'dts_package_location' Указывает расположение пакета. dts_package_locationnvarchar(12) с подписчиком по умолчанию. Расположение пакета может быть распространителем или подписчиком.

[ @reserved = ] 'reserved'

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

[ @offloadagent = ] 'remote_agent_activation'

Примечание

Удаленная активация агента является устаревшей и больше не поддерживается. Этот аргумент поддерживается только для обратной совместимости скриптов. Установка remote_agent_activation значения, отличного от false , приведет к ошибке.

[ @offloadserver = ] 'remote_agent_server_name'

Примечание

Удаленная активация агента является устаревшей и больше не поддерживается. Этот аргумент поддерживается только для обратной совместимости скриптов. Установка remote_agent_server_name для любого значения, отличного от NULL, приведет к ошибке.

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

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

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

Важно!

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

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

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'AdventureWorks2012';

-- At the subscription database, create a pull subscription 
-- to a transactional publication.
USE [AdventureWorks2012Replica]
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.

См. также:

Создание подписки по запросу
Подписка на публикации
sp_addpullsubscription (Transact-SQL)
sp_change_subscription_properties (Transact-SQL)
sp_droppullsubscription (Transact-SQL)
sp_helppullsubscription (Transact-SQL)
sp_helpsubscription_properties (Transact-SQL)