sp_addpullsubscription_agent (Transact-SQL)

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

Значок ссылки на разделСинтаксические обозначения в 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_subda y= ] 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'
    Имя издателя. Аргумент publisher имеет тип sysname и не имеет значения по умолчанию.

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

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

  • [ @subscriber=] 'subscriber'
    Имя подписчика. Аргумент subscriber имеет тип sysname и значение по умолчанию NULL.

    ПримечаниеПримечание

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

  • [ @subscriber_db=] '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=] 'subscriber_login'
    Имя входа подписчика, используемое для подключения к нему при синхронизации. Аргумент subscriber_login имеет тип sysname и значение по умолчанию NULL.

    ПримечаниеПримечание

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

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

    ПримечаниеПримечание

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

  • [ @distributor =] 'distributor'
    Имя распространителя. Аргумент distributor имеет тип sysname и значение по умолчанию, указанное в аргументе publisher.

  • [ @distribution_db=] 'distribution_db'
    Имя базы данных распространителя. Аргумент distribution_db имеет тип sysname и значение по умолчанию 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_login имеет тип sysname и значение по умолчанию NULL.

  • [ @distributor_password =] 'distributor_password'
    Пароль распространителя. Аргумент distributor_password требуется, если аргумент distributor_security_mode имеет значение 0. Аргумент distributor_password имеет тип sysname и значение по умолчанию NULL.

    Примечание по безопасностиПримечание по безопасности

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

  • [ @optional_command_line=] '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

    Еженедельно

    16

    Ежемесячно

    32

    По ежемесячному расписанию

    64

    Автозапуск

    128

    Повторяющееся задание

    ПримечаниеПримечание

    При значении 64 агент распространителя запускается в непрерывном режиме. Это соответствует вводу параметра -Continuous для агента. Дополнительные сведения см. в разделе Агент распространения репликации.

  • [ @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
    Время суток, на которое запланирован первый запуск агента распространителя, в формате ЧЧММСС. Аргумент active_start_time_of_day имеет тип int и значение по умолчанию 0.

  • [ @active_end_time_of_day=] active_end_time_of_day
    Время суток, на которое запланирована остановка планирования агента распространителя, в формате ЧЧММСС. Аргумент 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 больше не поддерживается. Попытка задать в качестве этого аргумента типа bit значение 1 приведет к ошибке.

  • [ @enabled_for_syncmgr=] 'enabled_for_syncmgr'
    Определяет, может ли быть подписка синхронизирована посредством диспетчера синхронизации (Майкрософт). Аргумент 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_location имеет тип nvarchar(12) и значение по умолчанию subscriber. Местом хранения пакета может быть распространитель (distributor) или подписчик (subscriber).

  • [ @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_name имеет тип sysname и значение по умолчанию NULL. Этот аргумент указывается только тогда, когда подписка будет синхронизироваться с использованием существующего задания, а не вновь создаваемого задания (выбор по умолчанию). Пользователь, не являющийся членом предопределенной роли сервера sysadmin, при указании аргумента job_name должен указать аргументы job_login и job_password.

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

  • [ @job_password= ] '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'AdventureWorks2008R2';

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

Разрешения

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