sp_changepublication (Transact-SQL)

Применимо к:SQL Server Управляемый экземпляр SQL Azure

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

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

Синтаксис

sp_changepublication [ [ @publication = ] 'publication' ]  
    [ , [ @property = ] 'property' ]  
    [ , [ @value = ] 'value' ]  
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]  
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]  
    [ , [ @publisher = ] 'publisher' ]

Аргументы

[ @publication = ] 'publication' Имя публикации. публикацияsysname с значением NULL по умолчанию.

[ @property = ] 'property' Свойство публикации для изменения. свойство nvarchar (255).

[ @value = ] 'value' Является новым значением свойства. значение равно nvarchar(255) с значением NULL по умолчанию.

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

Свойство Value Description
allow_anonymous true Анонимные подписки можно создать для данной публикации, и immediate_sync также должны быть верными. Невозможно изменить для одноранговых публикаций.
false На данную публикацию нельзя создавать анонимные подписки. Невозможно изменить для одноранговых публикаций.
allow_initialize_from_backup true Подписчики могут инициализировать подписку на эту публикацию из резервной копии, а не из исходного моментального снимка. Это свойство нельзя изменить для публикаций, отличных от Microsoft SQL Server.
false Подписчики должны использовать исходный моментальный снимок. Это свойство нельзя изменить для публикаций, отличных от SQL Server.
allow_partition_switch true ALTER TABLE... Инструкции SWITCH можно выполнять в опубликованной базе данных. Дополнительные сведения см. в статье Replicate Partitioned Tables and Indexes (Репликация секционированных таблиц и индексов).
false ALTER TABLE... Инструкции SWITCH нельзя выполнять в опубликованной базе данных.
allow_pull true Подписки по запросу на данную публикацию разрешены. Это свойство нельзя изменить для публикаций, отличных от SQL Server.
false Подписки по запросу на данную публикацию не разрешены. Это свойство нельзя изменить для публикаций, отличных от SQL Server.
allow_push true Принудительные подписки на данную публикацию разрешены.
false Принудительные подписки на данную публикацию не разрешены.
allow_subscription_copy true Включает возможность копирования баз данных, подписанных на эту публикацию. Это свойство нельзя изменить для публикаций, отличных от SQL Server.
false Отключает возможность копирования баз данных, подписанных на эту публикацию. Это свойство нельзя изменить для публикаций, отличных от SQL Server.
alt_snapshot_folder Расположение альтернативной папки для моментального снимка.
centralized_conflicts true Конфликтующие записи хранятся на издателе. Можно изменить только в том случае, если нет активных подписок. Это свойство нельзя изменить для публикаций, отличных от SQL Server.
false Конфликтные записи хранятся как на издателе, так и на подписчике, вызвавшем конфликт. Можно изменить только в том случае, если нет активных подписок. Это свойство нельзя изменить для публикаций, отличных от SQL Server.
compress_snapshot true Моментальный снимок в альтернативной папке моментальных снимков сжимается в формате CAB. Сжатие моментального снимка в папке моментальных снимков по умолчанию невозможно.
false Моментальный снимок не сжат, это режим по умолчанию для репликации.
conflict_policy паб побед Политика устранения конфликтов, возникающих при обновлении подписчиков, когда преимущество имеет издатель. Это свойство можно изменить только при отсутствии активных подписок. Не поддерживается для издателей Oracle.
sub reinit Для обновления подписчиков. Если происходит конфликт, подписку необходимо инициализировать повторно. Это свойство можно изменить только при отсутствии активных подписок. Не поддерживается для издателей Oracle.
вложенные победы Политика устранения конфликтов, возникающих при обновлении подписчиков, при которой преимущество имеет подписчик. Это свойство можно изменить только при отсутствии активных подписок. Не поддерживается для издателей Oracle.
conflict_retention Int , задающий период хранения конфликтов в днях. Значение по умолчанию — 14 суток. 0 означает, что очистка конфликтов не требуется. Не поддерживается для издателей Oracle.
описание Необязательная запись описания публикации.
enabled_for_het_sub true Позволяет публикации поддерживать подписчиков, отличных от SQL Server. enabled_for_het_sub нельзя изменить при наличии подписок на публикацию. Для выполнения хранимых процедур репликации (Transact-SQL) может потребоваться выполнить следующие требования, прежде чем задать enabled_for_het_sub значение true:
- allow_queued_tran должно быть false.
- allow_sync_tran должно быть false.
Изменение enabled_for_het_subна true может изменить существующие параметры публикации. Дополнительные сведения см. в статье Non-SQL Server Subscribers. Это свойство нельзя изменить для публикаций, отличных от SQL Server.
false Публикация не поддерживает подписчиков, отличных от SQL Server. Это свойство нельзя изменить для публикаций, отличных от SQL Server.
enabled_for_internet true Публикация через Интернет разрешена, поэтому для передачи файлов моментальных снимков подписчику может быть использован протокол FTP. Файлы синхронизации для публикации помещаются в следующий каталог: C:\Program Files\Microsoft SQL Server\MSSQL\Repldata\ftp. ftp_address не может иметь значение NULL. Это свойство нельзя изменить для публикаций, отличных от SQL Server.
false Публикация через Интернет не разрешена. Это свойство нельзя изменить для публикаций, отличных от SQL Server.
enabled_for_p2p true Публикация поддерживает одноранговую репликацию. Это свойство нельзя изменить для публикаций, отличных от SQL Server.
Чтобы задать значение true enabled_for_p2p, применяются следующие ограничения:
- allow_anonymous должно быть false
- allow_dts должно быть false.
- allow_initialize_from_backup должно иметь значение true
- allow_queued_tran должно быть false.
- allow_sync_tran должно быть false.
- enabled_for_het_sub должно быть false.
- independent_agent должно иметь значение true.
- repl_freq должен быть непрерывным.
- репликаte_ddl должно быть 1.
false Публикация не поддерживает одноранговую репликацию. Это свойство нельзя изменить для публикаций, отличных от SQL Server.
ftp_address Доступное по протоколу FTP расположение файлов моментальных снимков публикации. Это свойство нельзя изменить для публикаций, отличных от SQL Server.
ftp_login Имя пользователя, используемое для подключения к службе FTP, и значение ANONYMOUS, если оно разрешено. Это свойство нельзя изменить для публикаций, отличных от SQL Server.
ftp_password Пароль для имени пользователя при подключении к службе FTP. Это свойство нельзя изменить для публикаций, отличных от SQL Server.
ftp_port Номер порта службы FTP для распространителя. Это свойство нельзя изменить для публикаций, отличных от SQL Server.
ftp_subdirectory Указывает, где создаются файлы моментальных снимков, если публикация поддерживает распространение моментальных снимков по протоколу FTP. Это свойство нельзя изменить для публикаций, отличных от SQL Server.
immediate_sync true Файлы синхронизации для публикации создаются или повторно создаются при каждом выполнении агента моментальных снимков. Подписчики могут получать файлы синхронизации сразу после подписки, если агент моментальных снимков завершил работу перед подпиской. Новые подписки получают самые свежие файлы синхронизации, сформированные при последнем выполнении агента моментальных снимков. independent_agent также должно быть истинным. Дополнительные сведения о immediate_sync см. ниже.
false Файлы синхронизации создаются только для новых подписок. Подписчики могут получать файлы синхронизации после подписки при условии, что агент моментальных снимков был запущен и завершил работу.
independent_agent true Публикация имеет собственный выделенный агент распространителя.
false Публикация использует общий агент распространителя, а каждая пара баз данных публикации и подписки имеет общий агент.
p2p_continue_onconflict true Агент распространителя продолжает обрабатывать изменения при обнаружении конфликта.
Внимание. Рекомендуется использовать значение FALSEпо умолчанию. Если этот параметр заданTRUE, агент распространения пытается конвергентировать данные в топологии, применяя конфликтующую строку с узла с самым высоким идентификатором источника. Этот метод не гарантирует конвергенции. После обнаружения конфликта следует убедиться, что топология остается согласованной. Дополнительные сведения см. в подразделе «Обработка конфликтов» раздела Conflict Detection in Peer-to-Peer Replication.
false Агент распространителя прекращает обрабатывать изменения при обнаружении конфликта.
post_snapshot_script Указывает расположение файла скрипта Transact-SQL, который выполняется агент распространения после применения всех остальных реплика скриптов объектов и данных во время начальной синхронизации.
pre_snapshot_script Указывает расположение файла скрипта Transact-SQL, который выполняется агент распространения перед применением всех остальных реплика скриптов объектов и данных во время начальной синхронизации.
publish_to_ActiveDirectory true Этот аргумент устарел и поддерживается только для обратной совместимости скриптов. Вы больше не можете добавлять сведения о публикации в Microsoft Active Directory.
false Удаляет сведения о публикации из службы Active Directory.
queue_type sql Используйте SQL Server для хранения транзакций. Это свойство можно изменить только при отсутствии активных подписок.

Примечание. Поддержка использования очереди сообщений Майкрософт прекращена. Указание значения msmq для значения приводит к ошибке.
redirected_publisher Имя прослушивателя группы доступности. Используется в одноранговой реплика tion, если одноранговый узел находится в группе доступности. Это свойство нельзя изменить для публикаций, отличных от SQL Server. Представлено в SQL Server 2019 (15.x) CU 13. Дополнительные сведения см. в разделе "Настройка одного однорангового узла в составе группы доступности" или "Настройка обоих одноранговых узлов" в группах доступности.
repl_freq continuous Публикует выход всех транзакций, основанных на журнале.
Снимок Публикует только запланированные события синхронизации.
репликаte_ddl 1 Реплицируются инструкции языка определения данных (DDL), которые выполняются на издателе. Это свойство нельзя изменить для публикаций, отличных от SQL Server.
0 Репликация инструкций DDL не производится. Это свойство нельзя изменить для публикаций, отличных от SQL Server. Невозможно отключить репликацию изменений схемы при использовании одноранговой репликации.
репликаte_partition_switch true ALTER TABLE... Инструкции SWITCH, выполняемые в опубликованной базе данных, должны быть реплика для подписчиков. Этот параметр действителен только в том случае, если для allow_partition_switch задано значение TRUE. Дополнительные сведения см. в статье Replicate Partitioned Tables and Indexes (Репликация секционированных таблиц и индексов).
false ALTER TABLE... Операторы SWITCH не должны реплика подписчикам.
хранение Int , представляющий период хранения (в часах) для действия подписки. Если подписка не активна в течение указанного срока хранения, она удаляется.
snapshot_in_defaultfolder true Файлы моментального снимка сохранены в папке для моментальных снимков по умолчанию. Если alt_snapshot_folderтакже указан, файлы моментальных снимков хранятся как в стандартных, так и в альтернативных расположениях.
false Файлы моментальных снимков хранятся в альтернативном расположении, указанном alt_snapshot_folder.
состояние active Данные публикации становятся доступными подписчику сразу после создания публикации. Не поддерживается для издателей Oracle.
inactive Данные публикации недоступны подписчику сразу после создания публикации. Не поддерживается для издателей Oracle.
sync_method native При синхронизации подписок выполняется массовое копирование таблиц в собственном режиме.
character При синхронизации подписок выполняется массовое копирование таблиц в символьном режиме.
Параллельных Используется собственный программный вывод для массового копирования всех таблиц, не блокирующий таблицы во время формирования моментальных снимков. Недопустимо для репликации моментальных снимков.
concurrent_c Используется символьный программный вывод для массового копирования всех таблиц, не блокирующий таблицы во время формирования моментальных снимков. Недопустимо для репликации моментальных снимков.
Taskid Это свойство устарело и больше не поддерживается.
allow_drop true DROP TABLE Включает поддержку БИБЛИОТЕК DLL для статей, которые являются частью транзакционных реплика. Минимальная поддерживаемая версия: SQL Server 2014 (12.x) с пакетом обновления 2 или выше и SQL Server 2016 (13.x) с пакетом обновления 1 или более поздней версии. Дополнительная ссылка: КБ 3170123
false Отключает DROP TABLE поддержку БИБЛИОТЕК DLL для статей, которые являются частью транзакционных реплика tion. Это значение по умолчанию для этого свойства.
NULL (по умолчанию) Возвращает список поддерживаемых значений для свойства.

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

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

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

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

[ @publisher = ] 'publisher' Указывает издатель, отличный от SQL Server. publisher имеет имя sysname с значением NULL по умолчанию.

Примечание.

издатель не должен использоваться при изменении свойств статьи на издателе SQL Server.

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

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

Замечания

sp_changepublication используется в реплика моментальных снимков и реплика транзакций.

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

  • alt_snapshot_folder
  • compress_snapshot
  • enabled_for_het_sub
  • ftp_address
  • ftp_login
  • ftp_password
  • ftp_port
  • ftp_subdirectory
  • post_snapshot_script
  • pre_snapshot_script
  • snapshot_in_defaultfolder
  • sync_mode

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

Влияние свойства «immediate sync»

При немедленной синхронизации все изменения в журнале отслеживаются сразу после создания начального моментального снимка, даже если нет подписок. Зарегистрированные изменения используются при использовании резервной копии клиента для добавления нового однорангового узла. После восстановления резервной копии одноранговый узел синхронизируется с любыми другими изменениями после создания резервной копии. Так как команды отслеживаются в базе данных распространителя, логика синхронизации может рассматриваться в последней резервной копии LSN и использовать ее в качестве отправной точки, зная, что команда доступна, если резервная копия была сделана в течение максимального периода хранения. (Значение по умолчанию для минимального периода хранения составляет 0 часов, а максимальный период хранения — 24 часа.)

При отключении немедленной синхронизации изменения сохраняются по крайней мере минимальный период хранения и немедленно очищаются для всех транзакций, которые уже реплика. Если свойство «immediate sync» отключено и настроено на срок хранения по умолчанию, скорее всего, необходимые изменения после создания резервной копии были очищены, а новый одноранговый узел не был инициализирован надлежащим образом. Остался единственный параметр — замораживание топологии. Установка свойства «immediate sync» в положение «включено» предоставляет большую гибкость и рекомендуется для репликации P2P.

Пример

DECLARE @publication AS sysname
SET @publication = N'AdvWorksProductTran' 

-- Turn off DDL replication for the transactional publication.
USE [AdventureWorks2022]
EXEC sp_changepublication 
  @publication = @publication, 
  @property = N'replicate_ddl', 
  @value = 0
GO

Разрешения

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

См. также

Просмотр и изменение свойств публикации
Изменение свойств публикации и статьи
sp_addpublication (Transact-SQL)
sp_droppublication (Transact-SQL)
sp_helppublication (Transact-SQL)
Хранимые процедуры репликации (Transact-SQL)