sp_addpullsubscription (Transact-SQL)
Добавляет подписку по запросу к моментальному снимку или публикации транзакций. Эта хранимая процедура выполняется на подписчике в базе данных, в которой создается подписка по запросу.
Синтаксические обозначения в Transact-SQL
Синтаксис
sp_addpullsubscription [ @publisher= ] 'publisher'
[ , [ @publisher_db= ] 'publisher_db' ]
, [ @publication= ] 'publication'
[ , [ @independent_agent= ] 'independent_agent' ]
[ , [ @subscription_type= ] 'subscription_type' ]
[ , [ @description= ] 'description' ]
[ , [ @update_mode= ] 'update_mode' ]
[ , [ @immediate_sync = ] immediate_sync ]
Аргументы
[ @publisher=] 'publisher'
Имя издателя. Аргумент publisher имеет тип sysname и не имеет значения по умолчанию.[ @publisher_db=] 'publisher_db'
Имя базы данных издателя. Аргумент publisher_db имеет тип sysname и значение по умолчанию NULL. publisher_db не обрабатывается издателями Oracle.[ @publication=] 'publication'
Имя публикации. Аргумент publication имеет тип sysname и не имеет значения по умолчанию.[ @independent_agent=] 'independent_agent'
Показывает наличие изолированного агента распространителя для этой публикации. Аргумент independent_agent имеет тип nvarchar(5) и значение по умолчанию TRUE. Если равен true, то для этой публикации имеется отдельный агент распространителя. Если значение аргумента равно false, то имеется один агент распространителя для всех пар баз данных «издатель-подписчик». Аргумент independent_agent является свойством публикации и должен иметь то же значение, что и на издателе.[ @subscription_type=] 'subscription_type'
Тип подписки. Аргумент subscription_type имеет тип nvarchar(9) и значение по умолчанию anonymous. В качестве значения аргумента subscription_type необходимо указать значение pull, если только не требуется создать подписку без регистрации на издателе. В последнем случае следует указать значение anonymous. Это необходимо в тех случаях, когда невозможно установить соединение SQL Server с издателем в момент настройки подписки.[ @description=] 'description'
Описание публикации. Аргумент description имеет тип nvarchar(100) и значение по умолчанию NULL.[ @update_mode=] 'update_mode'
Тип обновления. Аргумент update_mode имеет тип nvarchar(30) и может принимать одно из следующих значений.Значение
Описание
read only (по умолчанию)
Подписка только для чтения. Никакие изменения на подписчике не передаются на издатель. Используется в том случае, когда данные на подписчике изменяться не будут.
sync tran
Включает поддержку немедленно обновляемых подписок.
queued tran
Включает подписку в очередь обновления. Изменения данных на подписчике могут быть произведены, сохранены в очереди и затем переданы на издатель.
отработка отказа
Включает для подписки немедленное обновление с обновлением по очереди при отработке отказа. Изменения данных на подписчике могут быть произведены и передаются на издатель немедленно. Если пропало соединение между издателем и подписчиком, изменения данных, выполненные на подписчике, сохраняются в очереди, пока связь не будет восстановлена.
queued failover
Включает для подписки режим обновления по очереди, при этом поддерживается возможность переключения в режим немедленного обновления. Изменение данных можно выполнять у подписчика и сохранять в очереди до установления соединения между подписчиком и издателем. При установлении постоянного соединения можно переключиться в режим немедленного обновления. Для издателей Oracle не поддерживается.
[ @immediate_sync =] immediate_sync
Указывает, выполняется ли создание (повторное создание) файлов синхронизации при каждом запуске агента моментальных снимков. Аргумент immediate_sync имеет тип bit, значение по умолчанию 1 и должен иметь то же значение, что и аргумент immediate_sync хранимой процедуры sp_addpublication. Аргумент immediate_sync является свойством публикации и должен иметь то же значение, что и на издателе.
Значения кодов возврата
0 (успешное завершение) или 1 (неуспешное завершение)
Замечания
Хранимая процедура sp_addpullsubscription используется при репликации моментальных снимков и репликации транзакций.
Примечание по безопасности |
---|
Для обновляемых посредством очередей подписок при соединении с подписчиками используйте проверку подлинности SQL Server, указывая для каждого из подписчиков различные учетные записи. При создании подписки по запросу, поддерживающей обновление посредством очередей, репликация всегда устанавливает соединение с использованием проверки подлинности Windows (так как для подписок по запросу репликация не сможет получить доступ к метаданным на подписчике, необходимым для выполнения проверки подлинности SQL Server). В этом случае после настройки подписки следует выполнить хранимую процедуру sp_changesubscription для перевода соединения на использование проверки подлинности SQL Server. |
Если таблица MSreplication_subscriptions (Transact-SQL) не существует на подписчике, хранимая процедура sp_addpullsubscription создаст ее. Также она добавляет новую строку в таблицу MSreplication_subscriptions (Transact-SQL). Для подписок по запросу хранимая процедура sp_addsubscription (Transact-SQL) сначала вызывается на издателе.
Пример
-- 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'AdventureWorks2012';
-- At the subscription database, create a pull subscription
-- to a transactional publication.
USE [AdventureWorks2012Replica]
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.
См. также
Справочник
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)