sp_addpushsubscription_agent (Transact-SQL)
Область применения: SQL Server Управляемый экземпляр SQL Azure
Добавляет новое запланированное задание агента, используемое для синхронизации принудительной подписки на публикацию транзакций. Эта хранимая процедура выполняется на издателе в базе данных публикации.
Внимание
При настройке издателя с удаленным распространителем значения, предоставленные для всех параметров, включая @job_login и @job_password, отправляются распространителю в виде обычного текста. Прежде чем выполнять эту хранимую процедуру, необходимо зашифровать соединение между издателем и его удаленным распространителем. Дополнительные сведения см. в разделе "Настройка SQL Server ядро СУБД для шифрования подключений".
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_addpushsubscription_agent
[ @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' ]
[ , [ @job_login = ] N'job_login' ]
[ , [ @job_password = ] N'job_password' ]
[ , [ @job_name = ] N'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 = ] N'dts_package_name' ]
[ , [ @dts_package_password = ] N'dts_package_password' ]
[ , [ @dts_package_location = ] N'dts_package_location' ]
[ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
[ , [ @distribution_job_name = ] N'distribution_job_name' ]
[ , [ @publisher = ] N'publisher' ]
[ , [ @subscriber_provider = ] N'subscriber_provider' ]
[ , [ @subscriber_datasrc = ] N'subscriber_datasrc' ]
[ , [ @subscriber_location = ] N'subscriber_location' ]
[ , [ @subscriber_provider_string = ] N'subscriber_provider_string' ]
[ , [ @subscriber_catalog = ] N'subscriber_catalog' ]
[ ; ]
Аргументы
[ @publication = ] N'publication'
Имя публикации. @publication — sysname без значения по умолчанию.
[ @subscriber = ] N'подписчик'
Имя экземпляра подписчика или имя прослушивателя группы доступности, если база данных подписчика является частью группы доступности. @subscriber — sysname с значением по умолчаниюNULL
.
Примечание.
Имя сервера можно указать как <Hostname>,<PortNumber>
для экземпляра по умолчанию или <Hostname>\<InstanceName>,<PortNumber>
для именованного экземпляра. Укажите номер порта для подключения при развертывании SQL Server в Linux или Windows с пользовательским портом, а служба браузера отключена. Использование пользовательских номеров портов для удаленного распространителя применяется к SQL Server 2019 (15.x) и более поздним версиям.
[ @subscriber_db = ] N'subscriber_db'
Имя базы данных подписки. @subscriber_db — sysname с значением по умолчаниюNULL
.
Для подписчика, отличного от SQL Server, укажите значение (назначение по умолчанию) для subscriber_db.
[ @subscriber_security_mode = ] subscriber_security_mode
Режим безопасности, используемый при подключении к подписчику при синхронизации. @subscriber_security_mode имеет небольшой размер с значением по умолчанию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.
Внимание
Для подписок, обновляемых в очереди, используйте проверку подлинности SQL Server для подключений к подписчикам и укажите другую учетную запись подключения к каждому подписчику. Для всех других подписок используйте проверку подлинности Windows.
[ @subscriber_login = ] N'subscriber_login'
Имя входа подписчика, используемое при подключении к подписчику при синхронизации. @subscriber_login — sysname с значением по умолчаниюNULL
.
[ @subscriber_password = ] N'subscriber_password'
Пароль подписчика. subscriber_password требуется, если для subscriber_security_mode задано значение 0
. @subscriber_password — sysname с значением по умолчаниюNULL
. Если используется пароль подписчика, он автоматически шифруется.
Внимание
Не используйте пустые пароли. Выбирайте надежные пароли. По возможности предлагайте пользователям вводить учетные данные системы безопасности во время выполнения приложения. В случае необходимости хранения учетных данных в файле скрипта этот файл следует защищать во избежание несанкционированного доступа.
[ @job_login = ] N'job_login'
Имя входа для учетной записи, в которой выполняется агент. В Управляемый экземпляр SQL Azure используйте учетную запись SQL Server. @job_login — nvarchar(257) с значением по умолчаниюNULL
. Эта учетная запись Windows всегда используется для подключений к распространителю средствами агентов и для подключений к подписчику в случае применения встроенных средств проверки подлинности Windows.
[ @job_password = ] N'job_password'
Пароль для учетной записи, в которой выполняется агент. @job_password — sysname, без значения по умолчанию.
Внимание
По возможности предлагайте пользователям вводить учетные данные системы безопасности во время выполнения приложения. В случае необходимости хранения учетных данных в файле скрипта этот файл следует защищать во избежание несанкционированного доступа.
[ @job_name = ] N'job_name'
Имя существующего задания агента. @job_name — sysname с значением по умолчаниюNULL
. Этот параметр указывается только в том случае, если подписка синхронизируется с использованием существующего задания, а не только что созданного задания (по умолчанию). Если вы не входите в предопределяемую роль сервера sysadmin , необходимо указать @job_login и @job_password при указании @job_name.
[ @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 с значением по умолчанию0
.
[ @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 с значением по умолчанию5
.
[ @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 с значением по умолчанию235959
.
[ @active_start_date = ] active_start_date
Дата, когда агент распространения впервые запланирована, отформатирована как yyyyMMdd
. @active_start_date имеет значение int с значением по умолчанию0
.
[ @active_end_date = ] active_end_date
Дата, когда агент распространения перестает планироваться, отформатирована как yyyyMMdd
. @active_end_date имеет значение int с значением по умолчанию99991231
.
[ @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) с значением по умолчаниюdistributor
. Расположение пакета может быть distributor
или subscriber
.
[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'
Указывает, может ли подписка быть синхронизирована с помощью Диспетчера синхронизации Майкрософт. @enabled_for_syncmgr — nvarchar(5) с значением по умолчаниюfalse
.
- Если
false
подписка не зарегистрирована в диспетчере синхронизации. - Если
true
подписка зарегистрирована в диспетчере синхронизации и может быть синхронизирована без запуска SQL Server Management Studio.
[ @distribution_job_name = ] N'distribution_job_name'
Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
[ @publisher = ] N'publisher'
Имя издателя. @publisher — sysname с значением по умолчаниюNULL
.
[ @subscriber_provider = ] N'subscriber_provider'
Уникальный программный идентификатор (PROGID), с помощью которого зарегистрирован поставщик OLE DB для источника данных, отличного от SQL Server. @subscriber_provider — sysname с значением по умолчаниюNULL
. @subscriber_provider должен быть уникальным для поставщика OLE DB, установленного на распространителю. @subscriber_provider поддерживается только для подписчиков, отличных от SQL Server.
[ @subscriber_datasrc = ] N'subscriber_datasrc'
Имя источника данных, понятное поставщиком OLE DB.@subscriber_datasrc — nvarchar(4000) с значением по умолчаниюNULL
. @subscriber_datasrc передается в качестве DBPROP_INIT_DATASOURCE
свойства для инициализации поставщика OLE DB. @subscriber_datasrc поддерживается только для подписчиков, отличных от SQL Server.
[ @subscriber_location = ] N'subscriber_location'
Расположение базы данных, понятное поставщиком OLE DB. @subscriber_location — nvarchar(4000) с значением по умолчаниюNULL
. @subscriber_location передается в качестве DBPROP_INIT_LOCATION
свойства для инициализации поставщика OLE DB. @subscriber_location поддерживается только для подписчиков, отличных от SQL Server.
[ @subscriber_provider_string = ] N'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 = ] N'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'AdventureWorks2022Replica';
--Add a push subscription to a transactional publication.
USE [AdventureWorks2022]
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
Связанный контент
- Создание принудительной подписки
- Создание подписки для подписчика, отличного от подписчика SQL Server
- Subscribe to Publications
- Хранимые процедуры репликации (Transact-SQL)
- sp_addsubscription (Transact-SQL)
- sp_changesubscription (Transact-SQL)
- sp_dropsubscription (Transact-SQL)
- sp_helpsubscription (Transact-SQL)