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


sp_changemergepublication (Transact-SQL)

Область применения: SQL Server

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

sp_changemergepublication
    [ @publication = ] N'publication'
    [ , [ @property = ] N'property' ]
    [ , [ @value = ] N'value' ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ ; ]

Аргументы

[ @publication = ] N'publication'

Имя публикации. @publication — sysname без значения по умолчанию.

[ @property = ] N'property'

Свойство, изменяемое для данной публикации. @property — sysname, и может быть одним из значений, перечисленных в следующей таблице.

[ @value = ] N'value'

Новое значение заданного свойства. @value — nvarchar(255) с значением по умолчаниюNULL.

, и может быть одним из значений, перечисленных в следующей таблице.

В данной таблице описаны свойства публикации, доступные для изменения, а также ограничения на значения этих свойств.

Свойство Значение Описание
allow_anonymous true Анонимные подписки разрешены.
false Анонимные подписки не допускаются.
allow_partition_realignment true Операции удаления отправляются на подписчик для отражения результатов изменений секции путем удаления данных, которые больше не являются частью секции подписчика. Это поведение принимается по умолчанию.
false Данные из старой секции остаются на подписчике, где изменения, внесенные в эти данные на издателе, не реплицируются на этот подписчик. Вместо этого изменения в подписчике реплицируются на издатель. Такой метод применяется для сохранения в подписке данных из старой секции, чтобы обеспечить доступ к архивным данным.
allow_pull true Подписки по запросу на данную публикацию разрешены.
false Подписки на вытягивание не разрешены для данной публикации.
allow_push true Принудительные подписки на данную публикацию разрешены.
false Для данной публикации не разрешены push-подписки.
allow_subscriber_initiated_snapshot true Подписчик может инициировать процесс получения моментального снимка.
false Подписчик не может инициировать процесс моментального снимка.
allow_subscription_copy true Можно копировать базы данных, подписанные на эту публикацию.
false Вы не можете скопировать базы данных подписки, которые подписываются на эту публикацию.
allow_synctoalternate true Разрешает альтернативному участнику синхронизации выполнять синхронизацию с этим издателем.
false Не позволяет альтернативному партнеру синхронизации синхронизироваться с этим издателем.
allow_web_synchronization true Подписки можно синхронизировать через HTTPS.
false Подписки не могут быть синхронизированы по протоколу HTTPS.
alt_snapshot_folder Указывает местоположение альтернативной папки для моментального снимка.
automatic_reinitialization_policy 1 Перед повторной инициализацией подписки передаются изменения из подписчика.
0 Перед повторной инициализацией подписки изменения из подписчика не передаются.
centralized_conflicts true Все конфликтующие записи хранятся на издателе. После изменения этого свойства необходимо выполнить повторную инициализацию существующих подписчиков.
false Конфликтующие записи хранятся на сервере, который был выбран в качестве проигравшего при устранении конфликта. После изменения этого свойства необходимо выполнить повторную инициализацию существующих подписчиков.
compress_snapshot true Моментальный снимок в альтернативной папке снимков сжимается в формате CAB. Моментальный снимок в папке моментальных снимков по умолчанию не может быть сжатым. Изменение этого свойства потребует создания нового моментального снимка.
false По умолчанию моментальный снимок не сжимается. Изменение этого свойства потребует создания нового моментального снимка.
conflict_logging publisher Конфликтующие записи хранятся на издателе.
subscriber Конфликтующие записи хранятся на подписчике, вызвавшем конфликт. Не поддерживается для подписчиков SQL Server Compact.
both Конфликтующие записи хранятся одновременно на издателе и на подписчике.
conflict_retention Значение int , указывающее период хранения в днях, для которых сохраняются конфликты. Параметр conflict_retention означает, что 0 очистка конфликтов не требуется.
description Описание публикации.
dynamic_filters true Публикация фильтруется на основе динамического предложения.
false Публикация не фильтруется динамически.
enabled_for_internet true Публикация через Интернет разрешена. Для передачи файлов моментальных снимков на подписчик можно использовать протокол FTP. Файлы синхронизации для публикации помещаются в C:\Program Files\Microsoft SQL Server\MSSQL\Repldata\ftp каталог.
false Публикация не включена для Интернета.
ftp_address Сетевой адрес службы FTP для распространителя. Указывает место хранения файлов моментальных снимков публикации.
ftp_login Пароль пользователя для подключения к службе FTP.
ftp_password Пароль пользователя для подключения к службе FTP.
ftp_port Номер порта службы FTP для распространителя. Указывает номер порта TCP FTP-сайта, на котором хранятся файлы моментальных снимков публикации.
ftp_subdirectory Указывает, где создаются файлы моментальных снимков, если публикация поддерживает распространение моментальных снимков по протоколу FTP.
generation_leveling_threshold int Задает число изменений, которые содержатся в поколении. Поколение — это набор изменений, переданных издателю или подписчику.
keep_partition_changes true Синхронизация оптимизирована и влияет только на подписчиков, чьи строки принадлежат измененным секциям. Изменение этого свойства потребует создания нового моментального снимка.
false Синхронизация не оптимизирована, и секции, отправляемые подписчикам, проверяются при изменении данных в секции. Изменение этого свойства потребует создания нового моментального снимка.
max_concurrent_merge Int, представляющий максимальное количество параллельных процессов слияния, которые могут выполняться в публикации. Если значение 0, ограничение не ограничено. Если одновременно выполняется больше этого числа процессов слияния, то избыточные задания помещаются в очередь до тех пор, пока текущий процесс не завершится.
max_concurrent_dynamic_snapshots Int, представляющий максимальное количество сеансов моментальных снимков для создания отфильтрованного моментального снимка данных, который может одновременно выполняться в публикации слиянием, использующей параметризованные фильтры строк. Если 0нет ограничений. Если на одно и то же время запланировано выполнение большего числа процессов создания моментальных снимков, то лишние задания помещаются в очередь и ожидают завершения текущих.
post_snapshot_script Указывает указатель на .sql расположение файла. Агент распространителя или агент слияния выполняет заключительный скрипт создания моментального снимка после того, как скрипты и данные всех реплицируемых объектов используются во время начальной синхронизации. Изменение этого свойства потребует создания нового моментального снимка.
pre_snapshot_script Указывает указатель на .sql расположение файла. Агент слияния выполняет предварительный скрипт моментального снимка до выполнения скриптов реплицируемых объектов, если моментальный снимок делается для подписчика. Изменение этого свойства потребует создания нового моментального снимка.
publication_compatibility_level 100RTM SQL Server 2008 (10.0.x)
90RTM SQL Server 2005 (9.x)
publish_to_activedirectory true Этот параметр устарел и поддерживается для обратной совместимости скриптов. Сведения о публикации больше не могут быть добавлены в Active Directory.
false Удаляет сведения о публикации из службы Active Directory.
replicate_ddl 1 Производится репликация инструкций DDL, выполняемых на издателе.
0 Инструкции DDL не реплицируются.
retention Int, представляющий количество retention_period_unit единиц, для которых необходимо сохранить изменения для данной публикации. Если подписка не синхронизирована в течение периода хранения, а ожидающие изменения были удалены операцией очистки на распространителе, срок действия подписки истекает и должен быть повторно инициализирован. Максимальный допустимый срок хранения равен числу дней между 31 декабря 9999 года и текущей датой.

Примечание. Срок хранения публикаций слиянием имеет 24-часовой льготный период для размещения подписчиков в разных часовых поясах.
retention_period_unit day Срок хранения указан в днях.
week Срок хранения указан в неделях.
month Срок хранения указан в месяцах.
year Срок хранения указан в годах.
snapshot_in_defaultfolder true Файлы моментального снимка сохранены в папке для моментальных снимков по умолчанию.
false Файлы моментальных снимков хранятся в альтернативном расположении, указанном в alt_snapshot_folder. Такое сочетание позволяет размещать файлы моментальных снимков одновременно и в каталоге по умолчанию, и в альтернативном каталоге.
snapshot_ready true Моментальный снимок доступен для публикации.
false Моментальный снимок публикации недоступен.
status active Публикация находится в активном состоянии.
inactive Публикация находится в неактивном состоянии.
sync_mode native или

bcp native
Для исходного моментального снимка используются результаты вывода всех таблиц в собственном режиме программы массового копирования.
character

или bcp character
Выходные данные программы массового копирования в режиме символов используются для начального моментального снимка, который необходим для всех подписчиков, отличных от SQL Server.
use_partition_groups

Примечание. Если вы хотите вернуться к использованию setupbelongsгрупп секций и задать use_partition_groups=false его changemergearticle, это может быть неправильно отражено после создания моментального снимка. Триггеры, созданные моментальным снимком, соответствуют группам секций.

Обходной путь для этого сценария — задать состояние "Неактивный", изменить use_partition_groupsи затем задать состояние "Активный".
true Публикация использует предварительно вычисляемые секции.
false Публикация не использует предварительно компилированные секции.
validate_subscriber_info Содержит список функций для получения сведений о подписчике. Затем проверяет критерии динамической фильтрации, используемые подписчиком, чтобы убедиться, что информация секционирована последовательно.
web_synchronization_url Значение по умолчанию URL-адреса в Интернете для веб-синхронизации.
NULL (по умолчанию) Возвращает список поддерживаемых значений для @property.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

Подтверждает, что действие, выполненное этой хранимой процедурой, может сделать недействительным существующий моментальный снимок. @force_invalidate_snapshot бит с значением по умолчанию0.

  • 0 указывает, что изменение публикации не отменяет моментальный снимок. Если хранимая процедура определяет, что изменение требует создания нового моментального снимка, возникает ошибка и изменения не выполняются.

  • 1 указывает, что изменение публикации может привести к недопустимой моментальному снимку. Если существуют существующие подписки, требующие нового моментального снимка, укажите разрешение на создание существующего моментального снимка как устаревшего и для создания нового моментального снимка.

Дополнительные сведения см. в разделе "Примечания " для свойств, которые при изменении требуют создания нового моментального снимка.

[ @force_reinit_subscription = ] force_reinit_subscription

Подтверждает, что действие, выполняемое данной хранимой процедурой, может сделать необходимой повторную инициализацию существующих подписок. @force_reinit_subscription бит с значением по умолчанию0.

  • 0 указывает, что изменение публикации не требует повторной инициализации подписок. Если хранимая процедура обнаруживает, что изменение требует повторной инициализации существующих подписок, возникает ошибка, и изменения не вносятся.

  • 1 означает, что изменения публикации повторно инициализируют существующие подписки и предоставляют разрешение на повторную инициализацию подписки.

В разделе "Примечания " описаны свойства, которые при изменении требуют повторной инициализации всех существующих подписок.

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

0 (успешно) или 1 (сбой).

Замечания

sp_changemergepublication используется в репликации слиянием.

Для изменения следующих свойств требуется создать новый моментальный снимок. Необходимо указать значение 1 параметра @force_invalidate_snapshot .

  • alt_snapshot_folder
  • compress_snapshot
  • dynamic_filters
  • ftp_address
  • ftp_login
  • ftp_password
  • ftp_port
  • ftp_subdirectory
  • post_snapshot_script
  • publication_compatibility_level (только для 80SP3 )
  • pre_snapshot_script
  • snapshot_in_defaultfolder
  • sync_mode
  • use_partition_groups

Изменение этих свойств потребует повторной инициализации существующих подписок. Необходимо указать значение 1 параметра @force_reinit_subscription .

  • dynamic_filters
  • validate_subscriber_info

Чтобы перечислить объекты публикации в Active Directory с помощью, publish_to_active_directoryобъект SQL Server должен быть уже создан в Active Directory.

Примеры

DECLARE @publication AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge'; 

-- Disable DDL replication for the publication.
USE [AdventureWorks2022]
EXEC sp_changemergepublication 
  @publication = @publication, 
  @property = N'replicate_ddl', 
  @value = 0,
  @force_invalidate_snapshot = 0, 
  @force_reinit_subscription = 0;
GO

Разрешения

Могут выполняться только члены предопределенных ролей сервера sysadmin или db_owner предопределенных ролей базы данных.sp_changemergepublication