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


sp_addmergepullsubscription (Transact-SQL)

Изменения: 15 сентября 2007 г.

Добавляет подписку по запросу к публикации слиянием. Эта хранимая процедура выполняется на стороне подписчика в базе данных подписки.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

sp_addmergepullsubscription [ @publication= ] 'publication' 
    [ , [ @publisher= ] 'publisher' ] 
    [ , [ @publisher_db = ] 'publisher_db' ] 
    [ , [ @subscriber_type= ] 'subscriber_type' ] 
    [ , [ @subscription_priority= ] subscription_priority ] 
    [ , [ @sync_type= ] 'sync_type' ] 
    [ , [ @description= ] 'description' ]

Аргументы

  • [ @publication=] 'publication'
    Имя публикации. Аргумент publication имеет тип sysname и не имеет значения по умолчанию.
  • [ @publisher= ] 'publisher'
    Имя издателя. Аргумент Publisher имеет тип sysname и имя локального сервера в качестве значения по умолчанию. Издатель должен быть действительным сервером.
  • [ @publisher_db=] 'publisher_db'
    Имя базы данных издателя. Аргумент publisher_db имеет тип sysname и значение по умолчанию NULL.
  • [ @subscriber_type=] 'subscriber_type'
    Тип подписчика. Аргумент subscriber_type имеет тип nvarchar(15) и может принимать значения global, local или anonymous. В SQL Server 2005 локальные подписки называются клиентскими подписками, а глобальные подписки называются серверными подписками. Дополнительные сведения см. в разделе «Типы подписки» в Способы обнаружения и разрешения конфликтов, используемые при репликации слиянием. Значение anonymous является обязательным, если нужно создать подписку без регистрации на издателе. Это необходимо в случаях, таких как веб-синхронизация, когда невозможно установить соединение SQL Server с издателем в момент настройки подписки.
  • [ @subscription_priority=] subscription_priority
    Приоритет подписки. Аргумент subscription_priority имеет тип real и значение по умолчанию NULL. Для локальных и анонимных подписок приоритет равен 0,0. При обнаружении конфликтов применяемый по умолчанию арбитр конфликтов выбирает победителя исходя из приоритетов. Для глобальных подписчиков приоритет подписки должен быть меньше 100, который является приоритетом издателя.
  • [ @sync_type=] 'sync_type'
    Тип синхронизации подписки. Аргумент sync_type имеет тип nvarchar(15) и значение по умолчанию automatic. Может принимать значения automatic или none. При значении automatic схема и исходные данные для опубликованных таблиц переносятся подписчику в первую очередь. При значении none предполагается, что подписчик уже имеет схему и исходные данные для опубликованных таблиц. Системные таблицы и данные переносятся всегда.

    ms189456.note(ru-ru,SQL.90).gifПримечание.
    Не рекомендуется задавать значение none. Дополнительные сведения см. в разделе Инициализация подписки на публикацию слиянием без моментального снимка.
  • [ @description=] 'description'
    Краткое описание этой подписки по запросу. Аргумент description имеет тип nvarchar(255) и значение по умолчанию NULL. Значение отображается в мониторе репликации в столбце Понятное имя, который может использоваться для сортировки подписок для контролируемой публикации.

Значения кодов возврата

0 (успешное завершение) или 1 (неуспешное завершение)

Замечания

Процедура sp_addmergepullsubscription используется для репликации слиянием.

Если используется агент SQL Server для синхронизации подписки, на стороне подписчика для создания агента и задания для синхронизации с публикацией должна быть выполнена хранимая процедура sp_addmergepullsubscription_agent.

Разрешения

Только члены фиксированной серверной роли sysadmin или фиксированной роли базы данных db_owner могут выполнять процедуру sp_addmergepullsubscription.

Пример

-- 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;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks';
SET @hostname = N'adventure-works\david8';

-- At the subscription database, create a pull subscription 
-- to a merge publication.
USE [AdventureWorksReplica]
EXEC sp_addmergepullsubscription 
  @publisher = @publisher, 
  @publication = @publication, 
  @publisher_db = @publicationDB;

-- Add an agent job to synchronize the pull subscription. 
EXEC sp_addmergepullsubscription_agent 
  @publisher = @publisher, 
  @publisher_db = @publicationDB, 
  @publication = @publication, 
  @distributor = @publisher, 
  @job_login = $(Login), 
  @job_password = $(Password),
  @hostname = @hostname;
GO

-- 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".

-- Publication must support anonymous Subscribers.
-- Execute this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @websyncurl AS sysname;
DECLARE @security_mode AS int;
DECLARE @login AS sysname;
DECLARE @password AS nvarchar(512);
SET @publication = N'AdvWorksSalesOrdersMergeWebSync';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks';
SET @websyncurl = 'https://' + $(WebServer) + '/WebSync';
SET @security_mode = 0; -- Basic Authentication for IIS
SET @login = $(Login);
SET @password = $(Password);

-- At the subscription database, create a pull subscription 
-- to a merge publication.
USE [AdventureWorksReplica]
EXEC sp_addmergepullsubscription 
    @publisher = @publisher, 
    @publication = @publication, 
    @publisher_db = @publicationDB,
    @subscriber_type = N'anonymous';

-- Add an agent job to synchronize the pull subscription. 
EXEC sp_addmergepullsubscription_agent 
    @publisher = @publisher, 
    @publisher_db = @publicationDB, 
    @publication = @publication, 
    @distributor = @publisher, 
    @job_login = @login, 
    @job_password = @password,
    @use_web_sync = 1,
    @internet_security_mode = @security_mode,
    @internet_url = @websyncurl,
    @internet_login = @login,
    @internet_password = @password;
GO

См. также

Справочник

sp_addmergepullsubscription_agent (Transact-SQL)
sp_changemergepullsubscription (Transact-SQL)
sp_dropmergepullsubscription (Transact-SQL)
sp_helpmergepullsubscription (Transact-SQL)
sp_helpsubscription_properties (Transact-SQL)

Другие ресурсы

Как создавать подписки по запросу (программирование репликации на языке Transact-SQL)
Подписка на публикации

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

15 сентября 2007 г.

Добавления
  • Добавлено примечание о том, что не рекомендуется задавать значение none для параметра @sync_type.

12 декабря 2006 г.

Измененное содержимое
  • Удалены неверные сведения о том, что анонимные подписки являются устаревшими.