sp_changepublication (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'
Свойство публикации, подлежащее изменению. Аргумент property имеет тип nvarchar(255).[ @value = ] 'value'
Новое значение свойства. Аргумент value имеет тип nvarchar(255) и значение по умолчанию NULL.В данной таблице описаны свойства публикации, доступные для изменения, а также ограничения на значения этих свойств.
Свойство
Значение
Описание
allow_anonymous
true
На данную публикацию могут создаваться анонимные подписки, и аргумент immediate_sync также должен иметь значение true. Невозможно изменить для одноранговых публикаций.
false
На данную публикацию нельзя создавать анонимные подписки. Невозможно изменить для одноранговых публикаций.
allow_initialize_from_backup
true
Подписчики могут инициализировать подписку на эту публикацию из резервной копии, а не из исходного моментального снимка. Это свойство невозможно изменить для публикаций, не являющихся Microsoft SQL Server.
false
Подписчики должны использовать исходный моментальный снимок. Это свойство невозможно изменить для публикаций, не являющихся SQL Server.
allow_partition_switch
true
Инструкции ALTER TABLE…SWITCH могут выполняться по отношению к опубликованной базе данных. Дополнительные сведения см. в разделе Репликация секционированных таблиц и индексов.
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, возможно, придется выполнить хранимую процедуру sp_changepublication (Transact-SQL), чтобы выполнялись следующие требования.
Столбец allow_queued_tran должен содержать значение false.
Столбец allow_sync_tran должен содержать значение false.
Изменение значения столбца enabled_for_het_sub на true может повлиять на существующие параметры публикации. Дополнительные сведения см. в разделе Подписчики, отличные от подписчиков SQL Server. Это свойство невозможно изменить для публикаций, не являющихся 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 приводит к ошибке.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. Дополнительные сведения см. в разделе Репликация секционированных таблиц и индексов.
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
Это свойство устарело и больше не поддерживается.
NULL (по умолчанию)
Возвращает список поддерживаемых значений для свойства property.
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
Подтверждает, что действие, выполненное этой хранимой процедурой, может сделать текущий моментальный снимок недействительным. Аргумент force_invalidate_snapshot имеет тип bit и значение по умолчанию 0.Значение 0 указывает, что изменение статьи не делает моментальный снимок недействительным. Если хранимая процедура определяет, что изменение требует создания нового моментального снимка, возникает ошибка, и изменение не выполняется.
Значение 1 указывает, что изменение статьи может сделать моментальный снимок недействительным. Если имеются подписки, требующие нового моментального снимка, это значение дает разрешение пометить существующий моментальный снимок как устаревший и сформировать новый моментальный снимок.
Сведения о свойствах, при изменении которых требуется формирование нового моментального снимка, см. в разделе «Примечания».
[@force_reinit_subscription = ] force_reinit_subscription
Подтверждает, что действие, выполняемое данной хранимой процедурой, может сделать необходимой повторную инициализацию текущих подписок. Аргумент force_reinit_subscription имеет тип bit и значение по умолчанию 0.Значение 0 указывает, что изменения статьи не требуют повторной инициализации подписки. Если хранимая процедура определяет, что изменения потребуют повторной инициализации подписок, возникает ошибка, и изменения не выполняются.
Значение 1 указывает, что изменения в статье приводят к повторной инициализации существующей подписки, и дает разрешение произвести повторную инициализацию.
[ @publisher = ] 'publisher'
Задает издатель, отличный от SQL Server. Аргумент publisher имеет тип sysname и значение по умолчанию NULL.Примечание Аргумент publisher не следует использовать при изменении свойств статьи на издателе SQL Server.
Значения кодов возврата
0 (успешное завершение) или 1 (неуспешное завершение)
Замечания
Процедура sp_changepublication используется в репликации моментальных снимков и репликации транзакций.
При изменении любого из следующих свойств требуется создание нового моментального снимка, а аргументу force_invalidate_snapshot при этом необходимо присвоить значение 1.
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, в службе Active Directory должен существовать объект SQL Server.
Пример
DECLARE @publication AS sysname
SET @publication = N'AdvWorksProductTran'
-- Turn off DDL replication for the transactional publication.
USE [AdventureWorks2008R2]
EXEC sp_changepublication
@publication = @publication,
@property = N'replicate_ddl',
@value = 0
GO
Разрешения
Процедуру sp_changepublication могут выполнять только члены предопределенной роли сервера sysadmin или предопределенной роли базы данных db_owner.
См. также