sp_changepublication (Transact-SQL)
Область применения: SQL Server Управляемый экземпляр SQL Azure
Изменяет свойства публикации. Эта хранимая процедура выполняется на издателе в базе данных публикации.
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_changepublication
[ [ @publication = ] N'publication' ]
[ , [ @property = ] N'property' ]
[ , [ @value = ] N'value' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @publisher = ] N'publisher' ]
[ ; ]
Аргументы
[ @publication = ] N'publication'
Имя публикации. @publication — sysname с значением по умолчаниюNULL
.
[ @property = ] N'property'
Свойство публикации для изменения. @property — nvarchar(255) с значением по умолчаниюNULL
.
[ @value = ] N'value'
Значение нового свойства. @value — nvarchar(255) с значением по умолчаниюNULL
.
В данной таблице описаны свойства публикации, доступные для изменения, а также ограничения на значения этих свойств.
Свойство | Значение | Описание |
---|---|---|
allow_anonymous |
true |
Анонимные подписки можно создать для данной публикации, а immediate_sync также должны быть true . Невозможно изменить для одноранговых публикаций. |
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 |
Для данной публикации не разрешены push-подписки. | |
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 невозможно изменить при наличии подписок на публикацию. Возможно, потребуется выполнить sp_changepublication , чтобы соответствовать следующим требованиям, прежде чем задать enabled_for_het_sub значение true:Аргумент - allow_queued_tran должен иметь значение false .Аргумент - allow_sync_tran должен иметь значение false .true Изменение enabled_for_het_sub существующих параметров публикации может быть изменено. Дополнительные сведения см. в статье 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 должен быть true Аргумент - allow_queued_tran должен иметь значение false .Аргумент - allow_sync_tran должен иметь значение false .Аргумент - enabled_for_het_sub должен иметь значение false .Аргумент - independent_agent должен иметь значение true .Аргумент - repl_freq должен иметь значение continuous .Аргумент - 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 также должно быть true . Дополнительные сведения см. в разделе "Эффект немедленной синхронизации". |
false |
Файлы синхронизации создаются только для новых подписок. Подписчики не могут получать файлы синхронизации после завершения подписки, пока агент моментальных снимков не будет запущена и завершена. | |
independent_agent |
true |
Публикация имеет собственный выделенный агент распространителя. |
false |
Публикация использует общий агент распространителя, а каждая пара баз данных публикации и подписки имеет общий агент. | |
p2p_continue_onconflict |
true |
Агент распространителя продолжает обрабатывать изменения при обнаружении конфликта. Внимание. Рекомендуется использовать значение FALSE по умолчанию. Если этот параметр заданTRUE , агент распространения пытается конвергентировать данные в топологии, применяя конфликтующую строку из узла, который является самым высоким идентификатором источника. Этот метод не гарантирует конвергенцию. После обнаружения конфликта следует убедиться, что топология остается согласованной. Дополнительные сведения см. в разделе "Обработка конфликтов" в одноранговой репликации . Обнаружение конфликтов в одноранговой репликации. |
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 для @value приводит к ошибке. |
redirected_publisher |
Имя прослушивателя группы доступности. Используется в одноранговой репликации, когда одноранговый узел находится в группе доступности. Это свойство нельзя изменить для публикаций, отличных от SQL Server. Представлено в SQL Server 2019 (15.x) CU 13. Дополнительные сведения см. в разделе "Настройка одного однорангового узла в составе группы доступности" или "Настройка обоих одноранговых узлов" в группах доступности. | |
repl_freq |
continuous |
Публикует выход всех транзакций, основанных на журнале. |
snapshot |
Публикует только запланированные события синхронизации. | |
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 операторы не следует реплицировать в подписчиков. |
|
retention |
Int , представляющий период хранения (в часах) для действия подписки. Если подписка не активна в течение срока хранения, она удаляется. | |
snapshot_in_defaultfolder |
true |
Файлы моментального снимка сохранены в папке для моментальных снимков по умолчанию. Если alt_snapshot_folder также указано, файлы моментальных снимков хранятся как в расположениях по умолчанию, так и в альтернативных расположениях. |
false |
Файлы моментальных снимков хранятся в альтернативном расположении, заданном alt_snapshot_folder . |
|
status |
active |
Данные публикации становятся доступными подписчику сразу после создания публикации. Не поддерживается для издателей Oracle. |
inactive |
Данные публикации недоступны для подписчиков при создании публикации. Не поддерживается для издателей Oracle. | |
sync_method |
native |
При синхронизации подписок выполняется массовое копирование таблиц в собственном режиме. |
character |
При синхронизации подписок выполняется массовое копирование таблиц в символьном режиме. | |
concurrent |
Использует выходные данные программы массового копирования в собственном режиме для всех таблиц, но не блокирует таблицы во время процесса создания моментальных снимков. Недопустимо для репликации моментальных снимков. | |
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 для статей, которые являются частью репликации транзакций. |
|
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
указывает, что изменения в статье приводят к повторной инициализации существующей подписки и предоставляют разрешение на повторную инициализацию подписки.
[ @publisher = ] N'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.
Эффект немедленной синхронизации
При немедленной синхронизации все изменения в журнале отслеживаются сразу после создания начального моментального снимка, даже если нет подписок. Зарегистрированные изменения используются при использовании резервной копии клиента для добавления нового однорангового узла. После восстановления резервной копии одноранговый узел синхронизируется с любыми другими изменениями после создания резервной копии. Так как команды отслеживаются в базе данных распространителя, логика синхронизации может рассматриваться в последней резервной копии LSN и использовать ее в качестве отправной точки, зная, что команда доступна, если резервная копия была сделана в течение максимального периода хранения. (Значение по умолчанию для минимального периода хранения — 0 часов, а максимальный срок хранения — 24 часа.)
При отключении немедленной синхронизации изменения сохраняются по крайней мере минимальный период хранения и удаляются немедленно для всех уже реплицированных транзакций. Если немедленная синхронизация отключена и настроена с периодом хранения по умолчанию, скорее всего, необходимые изменения после удаления резервного копирования были удалены, а новый узел однорангового узла не будет инициализирован должным образом. Остался единственный параметр — замораживание топологии. Установка свойства «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