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'
Имя публикации. параметр publication имеет значение sysname, значение по умолчанию — NULL.
[ @property = ] 'property'
Изменяемое свойство публикации. свойство имеет значение nvarchar(255).
[ @value = ] 'value'
Новое значение свойства. значение равноnvarchar(255) со значением по умолчанию NULL.
В данной таблице описаны свойства публикации, доступные для изменения, а также ограничения на значения этих свойств.
Свойство | Значение | Описание |
---|---|---|
allow_anonymous | true | Для данной публикации можно создать анонимные подписки, и immediate_sync также должны быть истинными. Невозможно изменить для одноранговых публикаций. |
false | На данную публикацию нельзя создавать анонимные подписки. Невозможно изменить для одноранговых публикаций. | |
allow_initialize_from_backup | true | Подписчики могут инициализировать подписку на эту публикацию из резервной копии, а не из исходного моментального снимка. Это свойство нельзя изменить для публикаций сторонних 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 | pub wins | Политика устранения конфликтов, возникающих при обновлении подписчиков, когда преимущество имеет издатель. Это свойство можно изменить только при отсутствии активных подписок. Не поддерживается для издателей Oracle. |
sub reinit | Для обновления подписчиков. Если происходит конфликт, подписку необходимо инициализировать повторно. Это свойство можно изменить только при отсутствии активных подписок. Не поддерживается для издателей Oracle. | |
sub wins | Политика устранения конфликтов, возникающих при обновлении подписчиков, при которой преимущество имеет подписчик. Это свойство можно изменить только при отсутствии активных подписок. Не поддерживается для издателей Oracle. | |
conflict_retention | значение int , указывающее период хранения конфликта в днях. Значение по умолчанию — 14 суток. 0 означает, что очистка конфликтов не требуется. Не поддерживается для издателей Oracle. | |
description | Необязательная запись описания публикации. | |
enabled_for_het_sub | true | Позволяет публикации поддерживать подписчиков, не относящихся к SQL Server. enabled_for_het_sub нельзя изменить при наличии подписок на публикацию. Перед установкой enabled_for_het_sub значения true может потребоваться выполнить хранимые процедуры репликации (Transact-SQL) в соответствии со следующими требованиями: - 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. Чтобы задать для enabled_for_p2pзначение true, действуют следующие ограничения: - allow_anonymous должно иметь значение false - allow_dts должно быть false. - allow_initialize_from_backup должно быть истинным - allow_queued_tran должно быть false. - allow_sync_tran должно быть false. - enabled_for_het_sub должно иметь значение false. - independent_agent должно быть истинным. - repl_freq должны быть непрерывными. - replicate_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 | Имя прослушивателя группы доступности. Используется в одноранговой репликации, когда одноранговый узел находится в группе доступности. Это свойство нельзя изменить для публикаций, не SQL Server. Появилось в SQL Server 2019 (15.x) CU 13. Дополнительные сведения см. в статье Настройка одного однорангового узла в составе группы доступности или Настройка обоих одноранговых узлов в группах доступности. | |
repl_freq | continuous | Публикует выход всех транзакций, основанных на журнале. |
Снимок | Публикует только запланированные события синхронизации. | |
replicate_ddl | 1 | Реплицируются инструкции языка определения данных (DDL), которые выполняются на издателе. Это свойство нельзя изменить для публикаций, не SQL Server. |
0 | Репликация инструкций DDL не производится. Это свойство нельзя изменить для публикаций, не SQL Server. Невозможно отключить репликацию изменений схемы при использовании одноранговой репликации. | |
replicate_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. | |
status | active | Данные публикации становятся доступными подписчику сразу после создания публикации. Не поддерживается для издателей Oracle. |
inactive | Данные публикации недоступны подписчику сразу после создания публикации. Не поддерживается для издателей Oracle. | |
sync_method | native | При синхронизации подписок выполняется массовое копирование таблиц в собственном режиме. |
character | При синхронизации подписок выполняется массовое копирование таблиц в символьном режиме. | |
Параллельных | Используется собственный программный вывод для массового копирования всех таблиц, не блокирующий таблицы во время формирования моментальных снимков. Недопустимо для репликации моментальных снимков. | |
concurrent_c | Используется символьный программный вывод для массового копирования всех таблиц, не блокирующий таблицы во время формирования моментальных снимков. Недопустимо для репликации моментальных снимков. | |
Taskid | Это свойство устарело и больше не поддерживается. | |
allow_drop | true | DROP TABLE Включает поддержку библиотек DLL для статей, которые являются частью репликации транзакций. Минимальная поддерживаемая версия: SQL Server 2014 (12.x) с пакетом обновления 2 (SP2) или выше и SQL Server 2016 (13.x) с пакетом обновления 1 (SP1) или выше. Дополнительные справочные материалы: 3170123 базы знаний |
false | Отключает DROP TABLE поддержку БИБЛИОТЕК DLL для статей, которые являются частью репликации транзакций. Это значение по умолчанию для этого свойства. |
|
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.
Примечание
Publisher не следует использовать при изменении свойств статьи на издателе 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»
При включенном свойстве «immediate sync» все изменения отслеживаются в журнале сразу же после создания исходного моментального снимка, даже если отсутствуют подписки. Зарегистрированные изменения используются, когда клиент использует резервное копирование для добавления нового однорангового узла. После восстановления резервной копии одноранговый узел синхронизируется со любыми другими изменениями, происходящими после создания резервной копии. Так как команды отслеживаются в базе данных распространителя, логика синхронизации может просматривать последний резервный номер LSN и использовать его в качестве отправной точки, зная, что команда доступна, если резервная копия была создана в течение максимального срока хранения. (Значение по умолчанию для минимального периода хранения равно 0 ч, а максимальный срок хранения — 24 часа.)
При выключенном свойстве «immediate sync» изменения сохраняются по меньшей мере на минимальный срок хранения и удаляются сразу же для всех реплицированных транзакций. Если свойство «immediate sync» отключено и настроено на срок хранения по умолчанию, скорее всего, необходимые изменения после создания резервной копии были очищены, а новый одноранговый узел не был инициализирован надлежащим образом. Остался единственный параметр — замораживание топологии. Установка свойства «immediate sync» в положение «включено» предоставляет большую гибкость и рекомендуется для репликации P2P.
Пример
DECLARE @publication AS sysname
SET @publication = N'AdvWorksProductTran'
-- Turn off DDL replication for the transactional publication.
USE [AdventureWorks2012]
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)