Поделиться через


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

--Add a push subscription to a transactional publication.
USE [AdventureWorks2008R2]
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.