sp_changemergearticle (Transact-SQL)

Область применения: yesSQL Server (все поддерживаемые версии)

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

Topic link iconСинтаксические обозначения в Transact-SQL

Синтаксис

  
sp_changemergearticle [ @publication = ] 'publication'  
        , [ @article = ] 'article'  
    [ , [ @property = ] 'property' ]  
    [ , [ @value = ] 'value' ]  
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]  
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]  

Аргументы

[ @publication = ] 'publication' Имя публикации, в которой существует статья. publicationsysname без значения по умолчанию.

[ @article = ] 'article' Имя статьи для изменения. Articlesysname без значения по умолчанию.

[ @property = ] 'property' Свойство, которое необходимо изменить для данной статьи и публикации. свойствоnvarchar(30) и может быть одним из значений, перечисленных в таблице.

[ @value = ] 'value' Новое значение для указанного свойства. значениеравно nvarchar(1000) и может быть одним из значений, перечисленных в таблице.

Эта таблица описывает свойства статей и значения этих свойств.

Свойство Значения Описание
allow_interactive_resolver true Разрешает использование для статьи интерактивного арбитра конфликтов.
false Запрещает использование для статьи интерактивного сопоставителя.
article_resolver Пользовательский сопоставитель для статьи. Применяется только к статье таблицы.
check_permissions (растровое изображение) 0x00 Разрешения уровня таблицы не проверяются.
0x10 Разрешения уровня таблицы проверяются на издателе, прежде чем к издателю применяются выполненные на подписчике инструкции INSERT.
0x20 Разрешения уровня таблицы проверяются на издателе, прежде чем к издателю применяются выполненные на подписчике инструкции UPDATE.
0x40 Разрешения уровня таблицы проверяются на издателе, прежде чем к издателю применяются выполненные на подписчике инструкции DELETE.
column_tracking true Включает трассировку уровня столбца. Применяется только к статье таблицы.

Примечание. Отслеживание на уровне столбцов нельзя использовать при публикации таблиц с более чем 246 столбцами.
false Выключает трассировку уровня столбца и оставляет обнаружение конфликтов уровня строки. Применяется только к статье таблицы.
compensate_for_errors true Выполняется компенсация при возникновении ошибок синхронизации. Дополнительные сведения см. в sp_addmergearticle.
false Компенсация не выполняется. Это значение по умолчанию. Дополнительные сведения см. в sp_addmergearticle.

** Важно ** Хотя данные в затронутых строках могут оказаться неконвергентными, сразу после устранения ошибок могут быть применены изменения и данные сходятся. Если исходная таблица для статьи уже опубликована в другой публикации, значение compensate_for_errors должно быть одинаковым для обеих статей.
creation_script Путь и имя необязательного скрипта схем статей, используемого для создания статьи в базе данных подписки.
delete_tracking true Выполняется репликация инструкций DELETE, что является значением по умолчанию.
false Репликация инструкций DELETE не выполняется.

** Важно ** Установка delete_tracking на значение false приводит к неконвергенции, а удаленные строки необходимо удалить вручную.
Описание Описание статьи.
destination_owner Имя владельца объекта в базе данных подписки, если не dbo.
identity_range bigint , указывающий размер диапазона, используемый при назначении новых значений идентификаторов, если в статье задан параметр identityrangemanagementoption для автоматического или auto_identity_range задано значение true. Применяется только к статье таблицы. Дополнительные сведения см. в разделе "Репликация слиянием" столбцов реплицируемых удостоверений.
identityrangemanagementoption Вручную Запрещает автоматическое управление диапазонами идентификаторов. Помечает столбцы идентификаторов как NOT FOR REPLICATION, чтобы разрешить ручное управление диапазонами идентификаторов. Дополнительные сведения см. в статье Репликация столбцов идентификаторов.
Нет Запрещает какое бы то ни было управление диапазонами идентификаторов.
logical_record_level_conflict_detection true Обнаружение конфликтов производится при внесении изменений в любое место логической записи. Требует, чтобы logical_record_level_conflict_resolution иметь значение true.
false Обнаружение конфликтов по умолчанию используется в соответствии с column_tracking.
logical_record_level_conflict_resolution true Выигравшая логическая запись целиком перезаписывает проигравшую.
false Победившие строки не ограничиваются пределами логической записи.
partition_options 0 Фильтрация для данной статьи либо является статической, либо не возвращает уникального подмножества данных для каждой из секций, то есть перекрывающихся секций.
1 Секции перекрываются, и изменения DML, произведенные на подписчике, не могут быть внесены в секцию, которой принадлежит строка.
2 Фильтрация для статьи дает неперекрывающиеся секции, но несколько подписчиков могут получить одну и ту же секцию.
3 Фильтрация для статьи дает неперекрывающиеся секции, уникальные для каждой из подписок.

Примечание. Если указать значение 3 для partition_options, в этой статье может быть только одна подписка для каждой секции данных. Если создается вторая подписка, в которой условие фильтрации сводится к той же секции, что и в существующей подписке, то существующая подписка удаляется.
pre_creation_command Нет Если таблица на подписчике уже существует, не выполняется никаких действий.
delete Выполняет удаление, используя предложение WHERE, указанное в фильтре подмножества.
drop Удаляет таблицу перед ее повторным созданием.
truncate Усекает целевую таблицу.
processing_order Int , указывающий порядок обработки статей в публикации слиянием.
pub_identity_range bigint , указывающий размер диапазона, выделенный подписчику с подпиской сервера, если в статье задано значение identityrangemanagementoption для автоматического или auto_identity_range задано значение true. Этот диапазон идентификаторов резервируется переиздающему подписчику для выделения собственным подписчикам. Применяется только к статье таблицы. Дополнительные сведения см. в разделе "Репликация слиянием" столбцов реплицируемых удостоверений.
published_in_tran_pub true Статья также опубликована в публикации транзакций.
false Статья не опубликована в публикации транзакций.
resolver_info Используется для указания дополнительных сведений, необходимых пользовательскому сопоставителю. Для некоторых сопоставителей Майкрософт требуется столбец, предоставленный в качестве входных данных сопоставителя. resolver_infonvarchar(255) с значением NULL по умолчанию. Дополнительные сведения см. в статье Сопоставители на базе технологии Microsoft COM.
schema_option (растровое изображение) Дополнительные сведения см. в подразделе «Примечания» далее в этом разделе.
0x00 Отключает скрипты агентом моментальных снимков и использует скрипт, предоставленный в creation_script.
0x01 Создает скрипт создания объекта (CREATE TABLE, CREATE PROCEDURE и т. д.).
0x10 Создает соответствующий кластеризованный индекс.
0x20 Преобразует определяемые пользователем типы данных в базовые типы данных подписчика. Этот параметр не может использоваться, если на столбец UDT наложено ограничение CHECK или DEFAULT, если столбец UDT является частью первичного ключа или если вычисляемый столбец ссылается на столбец UDT.
0x40 Создает соответствующие некластеризованные индексы.
0x80 Включает объявленную ссылочную целостность по первичным ключам.
0x100 Реплицирует пользовательские триггеры для статьи таблицы, если заданы.
0x200 Реплицирует ограничения FOREIGN KEY. Если таблица, к которой происходит обращение, не является частью публикации, все ограничения FOREIGN KEY в опубликованной таблице не реплицируются.
0x400 Реплицирует ограничения CHECK.
0x800 Реплицирует значения по умолчанию.
0x1000 Реплицирует параметры сортировки на уровне столбцов.
0x2000 Реплицирует расширенные свойства, связанные с исходным объектом опубликованной статьи.
0x4000 Реплицирует уникальные ключи для статьи таблицы, если они определены.
0x8000 Создает инструкции ALTER TABLE при включении в сценарий ограничений.
0x10000 Реплицирует ограничения CHECK как NOT FOR REPLICATION, чтобы они не применялись при синхронизации.
0x20000 Реплицирует ограничения FOREIGN KEY как NOT FOR REPLICATION, чтобы они не применялись при синхронизации.
0x40000 Реплицирует файловые группы, связанные с секционированной таблицей или индексом.
0x80000 Реплицирует схему секционирования для секционированной таблицы.
0x100000 Реплицирует схему секционирования для секционированного индекса.
0x200000 Реплицирует статистику таблицы.
0x400000 Реплицирует привязки к значениям по умолчанию.
0x800000 Реплицирует привязки к правилам.
0x1000000 Реплицирует полнотекстовый индекс.
0x2000000 Коллекции схем XML, привязанные к xml-столбцам , не реплицируются.
0x4000000 Реплицирует индексы в xml-столбцах .
0x8000000 Создает все схемы, отсутствующие в настоящий момент на подписчике.
0x10000000 Преобразует xml-столбцы в ntext на подписчике.
0x20000000 Преобразует типы данных больших объектов (nvarchar(max), varchar(max)и varbinary(max)), которые были введены в SQL Server 2005 (9.x) в типы данных, поддерживаемые в SQL Server 2000 (8.x).
0x40000000 Реплицировать разрешения.
0x80000000 Попытаться удалить зависимости для всех объектов, не являющихся частью публикации.
0x100000000 Используйте этот параметр для репликации атрибута FILESTREAM, если он указан в столбцах varbinary(max). Не указывайте этот параметр, если вы реплицируете таблицы подписчикам SQL Server 2005 (9.x). Репликация таблиц с столбцами FILESTREAM для подписчиков SQL Server 2000 (8.x) не поддерживается независимо от того, как задан этот параметр схемы. См . 0x800000000 связанных параметров.
0x200000000 Преобразует типы данных даты и времени (date, time, datetimeoffset и datetime2), представленные в SQL Server 2008, в типы данных, поддерживаемые в более ранних версиях SQL Server.
0x400000000 Проводит репликацию параметра сжатия для данных и индексов. Дополнительные сведения см. в разделе Data Compression.
0x800000000 Задайте этот параметр для сохранения данных атрибута FILESTREAM в его файловой группе на подписчике. Если этот параметр не задан, данные атрибута FILESTREAM сохраняются в файловой группе по умолчанию. Репликация не создает файловые группы, поэтому, если этот параметр задан, необходимо создать файловую группу до применения моментального снимка на подписчике. Дополнительные сведения о создании объектов перед применением моментального снимка см. в разделе «Выполнение скриптов до и после применения моментального снимка».

См. соответствующий параметр 0x100000000.
0x1000000000 Преобразует определяемые пользователем типы среды CLR в varbinary(max), чтобы столбцы типа UDT можно было реплицировать на подписчиков, работающих под управлением SQL Server 2005 (9.x).
0x2000000000 Преобразует тип данных hierarchyid в varbinary(max), чтобы столбцы типа hierarchyid можно было реплицировать на подписчиков, работающих под управлением SQL Server 2005 (9.x). Дополнительные сведения об использовании столбцов hierarchyid в реплицированных таблицах см. в разделе hierarchyid (Transact-SQL).
0x4000000000 Проводит репликацию всех фильтруемых индексов для таблицы. Дополнительные сведения о отфильтрованных индексах см. в разделе "Создание отфильтрованных индексов".
0x8000000000 Преобразует типы данных geography и geometry в varbinary(max), чтобы столбцы этих типов можно реплицировать на подписчиков, работающих под управлением SQL Server 2005 (9.x).
0x10000000000 Реплицирует индексы для столбцов типа geography и geometry.
NULL Система автоматически создает для статьи допустимые параметры схемы.
status active Скрипт начальной обработки для публикации таблицы запущен.
unsynced Скрипт начальной обработки для публикации таблицы будет запущен при следующем запуске агента моментальных снимков.
stream_blob_columns true Используется оптимизация потока данных при репликации столбцов больших двоичных объектов. Однако при этом некоторые функции репликации слиянием, например логические записи, могут помешать использованию оптимизации потока. stream_blob_columns имеет значение true, если параметр FILESTREAM включен. Это позволяет оптимально выполнять репликацию данных FILESTREAM и уменьшить использование памяти. Чтобы принудить статьи таблицы FILESTREAM не использовать потоковую передачу BLOB-объектов, задайте для stream_blob_columns значение false.

** Важно ** Включение этой оптимизации памяти может повредить производительность агента слияния во время синхронизации. Этот параметр должен использоваться только при репликации столбцов, содержащих мегабайты данных.
false Оптимизация при репликации столбцов больших двоичных объектов не используется.
subscriber_upload_options 0 Нет ограничений для обновлений, выполняемых на подписчике с помощью клиентской подписки. Все изменения выгружаются на издатель. Изменение этого свойства может потребовать повторной инициализации существующих подписчиков.
1 Изменения на подписчике с помощью клиентской подписки разрешены, но они не выгружаются на издатель.
2 Изменения на подписчике с помощью клиентской подписки не разрешены.
subset_filterclause Предложение WHERE задает горизонтальную фильтрацию. Применяется только к статье таблицы.

** Важно ** По соображениям производительности мы рекомендуем не применять функции к именам столбцов в параметризованных предложениях фильтра строк, таких как LEFT([MyColumn]) = SUSER_SNAME(). Если вы используете HOST_NAME в предложении фильтра и переопределяете значение HOST_NAME, может потребоваться преобразовать типы данных с помощью функции CONVERT. Дополнительные сведения о рекомендациях по этому делу см. в разделе "Переопределение значения HOST_NAME() в параметризованных фильтрах строк.
threshold Процентное значение, используемое для подписчиков, работающих под управлением SQL Server Compact или более ранних версий SQL Server. пороговое значение определяет, когда агент слияния назначает новый диапазон идентификаторов. Если превышен указанный процент использованных значений, агент слияния выделяет новый диапазон идентификаторов. Используется, когда параметр identityrangemanagementoption имеет значение auto или auto_identity_range имеет значение true. Применяется только к статье таблицы. Дополнительные сведения см. в разделе "Репликация слиянием" столбцов реплицируемых удостоверений.
verify_resolver_signature 1 Для пользовательского сопоставителя проверяется цифровая подпись, чтобы убедиться, что он получен из надежного источника.
0 Для пользовательского сопоставителя цифровая подпись, подтверждающая, что он получен из надежного источника, не проверяется.
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 означает, что изменения в статье слиянием приводят к повторной инициализации существующих подписок и дают разрешение на повторную инициализацию подписки.

Свойства, которые при изменении потребуют повторной инициализации всех текущих подписок, см. в разделе «Примечания».

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

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

Remarks

sp_changemergearticle используется в репликации слиянием.

Так как sp_changemergearticle используется для изменения свойств статьи, которые изначально были заданы с помощью sp_addmergearticle, дополнительные сведения об этих свойствах см. в sp_addmergearticle .

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

  • check_permissions

  • column_tracking

  • destination_owner

  • pre_creation_command

  • schema_options

  • subset_filterclause

Для изменения следующих свойств необходимо повторно инициализировать существующие подписки и указать значение 1 для параметра force_reinit_subscription :

  • check_permissions

  • column_tracking

  • destination_owner

  • pre_creation_command

  • identityrangemanagementoption

  • subscriber_upload_options

  • subset_filterclause

  • creation_script

  • schema_option

  • logical_record_level_conflict_detection

  • logical_record_level_conflict_resolution

При указании значения 3 для partition_options метаданные очищаются при каждом запуске агента слияния и истечении срока действия секционированного моментального снимка. При использовании этого параметра следует разрешить запрошенный подписчиком секционированный снимок. Дополнительные сведения см. в статье Snapshots for Merge Publications with Parameterized Filters.

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

Если несколько публикаций публикуют статьи, основанные на одной базовой таблице, изменение свойства delete_tracking или свойства compensate_for_errors для одной статьи приводит к тому же изменению других статей, основанных на той же таблице.

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

При изменении значения schema_option система не выполняет побитовое обновление. Это означает, что при настройке schema_option с помощью sp_changemergearticle могут быть отключены существующие битовые параметры. Чтобы сохранить существующие параметры, необходимо выполнить & (побитовое И) между заданным значением и текущим значением schema_option, которое можно определить, выполнив sp_helpmergearticle.

Внимание!

Если вы много (возможно, сотни) статей в публикации и выполняете sp_changemergearticle для одной из статей, может потребоваться много времени, чтобы завершить выполнение.

Таблица «Допустимые параметры схемы»

В следующей таблице описаны допустимые значения schema_optionв зависимости от типа статьи.

Тип статьи Значения параметра схемы
func schema only 0x01 и 0x2000
indexed view schema only 0x01, 0x040, 0x0100, 0x2000, 0x40000, 0x1000000 и 0x200000
proc schema only 0x01 и 0x2000
table Все параметры.
view schema only 0x01, 0x040, 0x0100, 0x2000, 0x40000, 0x1000000 и 0x200000

Пример

DECLARE @publication AS sysname;
DECLARE @article AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @article = N'SalesOrderHeader';

-- Enable column-level conflict tracking.
-- Changing this property requires that existing subscriptions
-- be reinitialized and that a new snapshot be generated.
USE [AdventureWorks2012]
EXEC sp_changemergearticle 
  @publication = @publication,
  @article = @article, 
  @property = N'column_tracking', 
  @value = N'true',
  @force_invalidate_snapshot = 1,
  @force_reinit_subscription = 1;
GO

Разрешения

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

См. также

View and Modify Article Properties (Просмотр и изменение свойств статьи)
Изменение свойств публикации и статьи
sp_addmergearticle (Transact-SQL)
sp_dropmergearticle (Transact-SQL)
sp_helpmergearticle (Transact-SQL)
Хранимые процедуры репликации (Transact-SQL)