sp_changepublication (Transact-SQL)

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

Значок ссылки на разделСинтаксические обозначения в 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.