sp_addpullsubscription (Transact-SQL)
Область применения: SQL Server Управляемый экземпляр SQL Azure
Добавляет подписку по запросу к моментальному снимку или публикации транзакций. Эта хранимая процедура выполняется на подписчике в базе данных, в которой создается подписка по запросу.
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_addpullsubscription
[ @publisher = ] N'publisher'
[ , [ @publisher_db = ] N'publisher_db' ]
, [ @publication = ] N'publication'
[ , [ @independent_agent = ] N'independent_agent' ]
[ , [ @subscription_type = ] N'subscription_type' ]
[ , [ @description = ] N'description' ]
[ , [ @update_mode = ] N'update_mode' ]
[ , [ @immediate_sync = ] immediate_sync ]
[ ; ]
Аргументы
[ @publisher = ] N'publisher'
Имя издателя. @publisher — sysname без значения по умолчанию.
Примечание.
Имя сервера можно указать как <Hostname>,<PortNumber>
для экземпляра по умолчанию или <Hostname>\<InstanceName>,<PortNumber>
для именованного экземпляра. Укажите номер порта для подключения при развертывании SQL Server в Linux или Windows с пользовательским портом, а служба браузера отключена. Использование пользовательских номеров портов для удаленного распространителя применяется к SQL Server 2019 (15.x) и более поздним версиям.
[ @publisher_db = ] N'publisher_db'
Имя базы данных издателя. @publisher_db имеет имя sysname с значением по умолчаниюNULL
. @publisher_db игнорируется издателями Oracle.
[ @publication = ] N'publication'
Имя публикации. @publication — sysname без значения по умолчанию.
[ @independent_agent = ] N'independent_agent'
Указывает, есть ли автономный агент распространения для этой публикации. @independent_agent — nvarchar(5) с значением по умолчаниюtrue
.
- Если
true
для этой публикации существует автономный агент распространения. - Если
false
для каждой пары баз данных издателя или подписчика существует одна агент распространения.
@independent_agent является свойством публикации и должно иметь то же значение, что и издатель.
[ @subscription_type = ] N'subscription_type'
Тип подписки. @subscription_type — nvarchar(9) с значением по умолчаниюanonymous
. Необходимо указать значение pull
для @subscription_type, если вы не хотите создать подписку без регистрации подписки на издателе. В этом случае необходимо указать значение anonymous
. Это необходимо для случаев, в которых невозможно установить подключение SQL Server к издателю во время настройки подписки.
[ @description = ] N'description'
Описание публикации. @description — nvarchar(100) с значением по умолчаниюNULL
.
[ @update_mode = ] N'update_mode'
Тип обновления. @update_mode — nvarchar(30) и может быть одним из следующих значений.
значение | Описание |
---|---|
read only (по умолчанию) |
Подписка только для чтения. Любые изменения на подписчике не отправляются издателю. Следует использовать, если обновления не вносятся на подписчике. |
synctran |
Включает поддержку немедленно обновляемых подписок. |
queued tran |
Обеспечивает подписку обновляемую посредством очередей. Изменение данных можно выполнять у подписчика, сохранять в очереди и после этого передавать издателю. |
failover |
Включает для подписки немедленное обновление с обновлением по очереди при переходе на другой ресурс в случае отработки отказа. Изменение данных можно выполнять на подписчике и немедленно передавать издателю. Если издатель и подписчик не подключены, изменения данных, внесенные на подписчике, можно хранить в очереди до повторного подключения подписчика и издателя. |
queued failover |
Примечание. Не поддерживается для издателей Oracle. Включает подписку с обновлением по очереди в качестве обновляемой посредством очередей подписки, при этом поддерживает возможность переключения в режим немедленного обновления. Изменение данных можно выполнять у подписчика и сохранять в очереди до установления соединения между подписчиком и издателем. При установлении постоянного соединения можно переключиться в режим немедленного обновления. |
[ @immediate_sync = ] immediate_sync
Указывает, создаются ли файлы синхронизации или создаются повторно при каждом запуске агент моментальных снимков. @immediate_sync бит, по умолчанию 1
и должен иметь то же значение, что и @immediate_sync в sp_addpublication. @immediate_sync является свойством публикации и должно иметь то же значение, что и издатель.
Значения кода возврата
0
(успешно) или 1
(сбой).
Замечания
sp_addpullsubscription
используется в репликации моментальных снимков и репликации транзакций.
Внимание
Для подписок, обновляемых в очереди, используйте проверку подлинности SQL Server для подключений к подписчикам и укажите другую учетную запись подключения к каждому подписчику. При создании подписки на вытягивание, поддерживающей обновление в очереди, репликация всегда задает подключение для использования проверки подлинности Windows (для подписок на вытягивание репликация не может получить доступ к метаданным на подписчике, необходимому для использования проверки подлинности SQL Server). В этом случае необходимо выполнить sp_changesubscription , чтобы изменить подключение, чтобы использовать проверку подлинности SQL Server после настройки подписки.
Если таблица MSreplication_subscriptions не существует на подписчике, sp_addpullsubscription
создайте ее. Она также добавляет строку в таблицу MSreplication_subscriptions . Для подписок на вытягивание sp_addsubscription сначала следует вызывать на издателе.
Примеры
-- 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'AdventureWorks2022';
-- At the subscription database, create a pull subscription
-- to a transactional publication.
USE [AdventureWorks2022Replica]
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
Связанный контент
- Create a Pull Subscription
- Create an Updatable Subscription to a Transactional Publication
- Subscribe to Publications
- sp_addpullsubscription_agent (Transact-SQL)
- sp_change_subscription_properties (Transact-SQL)
- sp_droppullsubscription (Transact-SQL)
- sp_helppullsubscription (Transact-SQL)
- sp_helpsubscription_properties (Transact-SQL)
- Системные хранимые процедуры (Transact-SQL)