Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения: 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)