sp_addpushsubscription_agent (Transact-SQL)

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

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

Если издатель настраивается с удаленным распространителем, то значения, передаваемые для всех аргументов, включая job_login и job_password, передаются распространителю в формате обычного (незашифрованного) текста. Прежде чем выполнять эту хранимую процедуру, необходимо зашифровать соединение между издателем и его удаленным распространителем. Дополнительные сведения см. в разделе Включение шифрования соединений в ядре СУБД (диспетчер конфигурации SQL Server).

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

sp_addpushsubscription_agent [ @publication= ] 'publication'
    [ , [ @subscriber = ] 'subscriber' ]
    [ , [ @subscriber_db = ] 'subscriber_db' ]
    [ , [ @subscriber_security_mode = ] subscriber_security_mode ]
    [ , [ @subscriber_login = ] 'subscriber_login' ]
    [ , [ @subscriber_password = ] 'subscriber_password' ]
    [ , [ @job_login = ] 'job_login' ] 
    [ , [ @job_password = ] 'job_password' ] 
    [ , [ @job_name = ] 'job_name' ] 
    [ , [ @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 ]
    [ , [ @dts_package_name = ] 'dts_package_name' ]
    [ , [ @dts_package_password = ] 'dts_package_password' ]
    [ , [ @dts_package_location = ] 'dts_package_location' ]
    [ , [ @enabled_for_syncmgr = ] 'enabled_for_syncmgr' ]
    [ , [ @distribution_job_name = ] 'distribution_job_name' ]
    [ , [ @publisher = ] 'publisher' ]
    [ , [ @subscriber_provider = ] 'subscriber_provider' ] 
    [ , [ @subscriber_datasrc = ] 'subscriber_datasrc' ] 
    [ , [ @subscriber_location = ] 'subscriber_location' ]
    [ , [ @subscriber_provider_string = ] 'subscriber_provider_string' ] 
    [ , [ @subscriber_catalog = ] 'subscriber_catalog' ]

Аргументы

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

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

  • [ @subscriber_db =] 'subscriber_db'
    Имя базы данных подписки. Аргумент subscriber_db имеет тип sysname и значение по умолчанию NULL. Для подписчика, отличного от SQL Server, укажите значение (назначение по умолчанию) для аргумента subscriber_db.

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

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

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

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

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

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

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

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

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

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

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

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

  • [ @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 и значение по умолчанию 0.

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

    Значение

    Описание

    1

    Однократно

    2

    Дважды

    4 (по умолчанию)

    Минута

    8

    Час

  • [ @frequency_subday_interval = ] frequency_subday_interval
    Интервал для аргумента frequency_subday. Аргумент frequency_subday_interval имеет тип int и значение по умолчанию 5.

  • [ @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 и значение по умолчанию 235959.

  • [ @active_start_date = ] active_start_date
    Дата, когда запланирован первый запуск агента распространителя, в формате ГГГГММДД. Аргумент active_start_date имеет тип int и значение по умолчанию 0.

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

  • [ @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) и значение по умолчанию DISTRIBUTOR. Местом хранения пакета может быть распространитель или подписчик.

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

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

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

  • [ @subscriber_provider= ] 'subscriber_provider'
    Уникальный программный идентификатор (PROGID), с которым зарегистрирован поставщик OLE DB для источника данных, не относящихся к SQL Server. Аргумент subscriber_provider имеет тип sysname и значение по умолчанию NULL. Имя subscriber_provider должно быть уникальным для указанного поставщика OLE DB на распространителе. Аргумент subscriber_provider можно использовать только для подписчиков, отличных от подписчиков SQL Server.

  • [ @subscriber_datasrc= ] 'subscriber_datasrc'
    Имя источника данных, понятное поставщику OLE DB. Аргумент subscriber_datasrc имеет тип nvarchar(4000) и значение по умолчанию NULL. Значение subscriber_datasrc передается как свойство DBPROP_INIT_DATASOURCE для инициализации поставщика OLE DB. Аргумент subscriber_datasrc можно использовать только для подписчиков, отличных от подписчиков SQL Server.

  • [ @subscriber_location= ] 'subscriber_location'
    Расположение базы данных, подразумевается поставщик OLE DB. Аргумент subscriber_location имеет тип nvarchar(4000) и значение по умолчанию NULL. Значение subscriber_location передается как свойство DBPROP_INIT_LOCATION для инициализации поставщика OLE DB. Аргумент subscriber_location можно использовать только для подписчиков, отличных от подписчиков SQL Server.

  • [ @subscriber_provider_string= ] 'subscriber_provider_string'
    Идентифицирующая источник данных строка соединения, зависящая от поставщика OLE DB. Аргумент subscriber_provider_string имеет тип nvarchar(4000) и значение по умолчанию NULL. subscriber_provider_string передается в IDataInitialize или задается как свойство DBPROP_INIT_PROVIDERSTRING для инициализации поставщика OLE DB. Аргумент subscriber_provider_string можно использовать только для подписчиков, отличных от подписчиков SQL Server.

  • [ @subscriber_catalog= ] 'subscriber_catalog'
    Каталог, используемый при соединении с поставщиком OLE DB. Аргумент subscriber_catalog имеет тип sysname и значение по умолчанию NULL. Значение subscriber_catalog передается как свойство DBPROP_INIT_CATALOG для инициализации поставщика OLE DB. Аргумент subscriber_catalog можно использовать только для подписчиков, отличных от подписчиков SQL Server.

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

0 (успешное завершение) или 1 (неуспешное завершение)

Замечания

Процедура sp_addpushsubscription_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".

DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorks2012Replica';

--Add a push subscription to a transactional publication.
USE [AdventureWorks2012]
EXEC sp_addsubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @destination_db = @subscriptionDB, 
  @subscription_type = N'push';

--Add an agent job to synchronize the push subscription.
EXEC sp_addpushsubscription_agent 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @job_login = $(Login), 
  @job_password = $(Password);
GO

Разрешения

Только члены предопределенной роли сервера sysadmin или предопределенной роли базы данных db_owner имеют право выполнять sp_addpushsubscription_agent.

См. также

Справочник

Хранимые процедуры репликации (Transact-SQL)

sp_addsubscription (Transact-SQL)

sp_changesubscription (Transact-SQL)

sp_dropsubscription (Transact-SQL)

sp_helpsubscription (Transact-SQL)

Основные понятия

Создание принудительной подписки

Создание подписки для подписчика, отличного от подписчика SQL Server

Подписка на публикации