sp_changemergearticle (Transact-SQL)

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

Значок ссылки на раздел Синтаксические обозначения в 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'
    Имя публикации, в которой находится статья. Аргумент publication имеет тип sysname и не имеет значения по умолчанию.

  • [ @article=] 'article'
    Имя изменяемой статьи. Аргумент article имеет тип sysname и не имеет значения по умолчанию.

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

  • [ @value=] '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 приведет к отсутствию конвергенции данных, поэтому удаленные строки нужно будет удалить вручную.

    description

     

    Описание статьи.

    destination_owner

     

    Имя владельца объекта в базе данных подписки, если не равно dbo.

    identity_range

     

    Имеет тип bigint и определяет размер диапазона идентификаторов при назначении новых значений идентификаторов, если параметру identityrangemanagementoption статьи присвоено значение auto или если параметр auto_identity_range имеет значение true. Применяется только к статье таблицы. Дополнительные сведения см. в подразделе «Репликация слиянием» раздела Репликация столбцов идентификаторов.

    identityrangemanagementoption

    manual

    Запрещает автоматическое управление диапазонами идентификаторов. Помечает столбцы идентификаторов как NOT FOR REPLICATION, чтобы разрешить ручное управление диапазонами идентификаторов. Дополнительные сведения см. в разделе Репликация столбцов идентификаторов.

     

    none

    Запрещает какое бы то ни было управление диапазонами идентификаторов.

    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

    Фильтрация для статьи дает неперекрывающиеся секции, уникальные для каждой из подписок.

    ПримечаниеПримечание

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

    pre_creation_command

    none

    Если таблица на подписчике уже существует, не выполняется никаких действий.

     

    delete

    Выполняет удаление, используя предложение WHERE, указанное в фильтре подмножества.

     

    drop

    Удаляет таблицу перед ее повторным созданием.

     

    truncate

    Усекает целевую таблицу.

    processing_order

     

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

    pub_identity_range

     

    Имеет тип bigint и указывает размер диапазона, выделяемого подписчику с серверной подпиской, если параметру identityrangemanagementoption статьи присвоено значение auto или если параметр auto_identity_range имеет значение true. Этот диапазон идентификаторов резервируется переиздающему подписчику для выделения собственным подписчикам. Применяется только к статье таблицы. Дополнительные сведения см. в подразделе «Репликация слиянием» раздела Репликация столбцов идентификаторов.

    published_in_tran_pub

    true

    Статья также опубликована в публикации транзакций.

     

    false

    Статья не опубликована в публикации транзакций.

    resolver_info

     

    Используется для указания дополнительных сведений, необходимых пользовательскому сопоставителю. Некоторым из сопоставителей конфликтов Microsoft в качестве входного параметра требуется столбец. Аргумент resolver_info имеет тип nvarchar(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, в типы данных, поддерживаемые в SQL Server 2000.

     

    0x40000000

    Реплицировать разрешения.

     

    0x80000000

    Попытаться удалить зависимости для всех объектов, не являющихся частью публикации.

    0x100000000

    Использовать этот параметр для репликации атрибута FILESTREAM, если он указан в столбцах типа varbinary(max). Не указывайте этот параметр, если выполняется репликация таблиц на подписчики SQL Server 2005. Репликация таблиц с колонками FILESTREAM на подписчики SQL Server 2000 не поддерживается, независимо от того, как задан этот параметр схемы. См. связанный параметр 0x800000000.

    0x200000000

    Преобразует типы данных даты и времени (date, time, datetimeoffset и datetime2), которые появились в SQL Server 2008, в типы данных, которые поддерживаются в более ранних версиях SQL Server.

    0x400000000

    Проводит репликацию параметра сжатия для данных и индексов. Дополнительные сведения см. в разделе Сжатие данных.

    0x800000000

    Задайте этот параметр для сохранения данных атрибута FILESTREAM в его файловой группе на подписчике. Если этот параметр не задан, данные атрибута FILESTREAM сохраняются в файловой группе по умолчанию. Репликация не создает файловые группы, поэтому, если этот параметр задан, необходимо создать файловую группу до применения моментального снимка на подписчике. Дополнительные сведения о создании объектов до применения моментального снимка см. в разделе Выполнение скриптов до и после применения моментального снимка.

    См. связанный параметр 0x100000000.

    0x1000000000

    Преобразует определяемые пользователем типы данных среды CLR в тип данных varbinary(max), чтобы столбцы с определяемым пользователем типом данных могли реплицироваться на подписчики, на которых выполняется SQL Server 2005.

    0x2000000000

    Преобразует тип данных hierarchyid в varbinary(max), чтобы столбцы типа hierarchyid можно было реплицировать на подписчики, использующие SQL Server 2005. Дополнительные сведения об использовании столбцов hierarchyid в реплицированных таблицах см. в разделе hierarchyid (Transact-SQL).

    0x4000000000

    Проводит репликацию всех фильтруемых индексов для таблицы. Дополнительные сведения о фильтруемых индексах см. в разделе Создание отфильтрованных индексов.

     

    0x8000000000

    Преобразует типы данных geography и geometry в тип varbinary(max), чтобы обеспечить возможность репликации столбцов этих типов на подписчики SQL Server 2005.

     

    0x10000000000

    Производит репликацию индексов для столбцов типа geography и geometry.

     

    NULL

    Система автоматически создает для статьи допустимые параметры схемы.

    status

    active

    Скрипт начальной обработки для публикации таблицы запущен.

     

    unsynced

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

    stream_blob_columns

    true

    Используется оптимизация потока данных при репликации столбцов больших двоичных объектов. Однако при этом некоторые функции репликации слиянием, например логические записи, могут помешать использованию оптимизации потока. Параметр stream_blob_columns установлен в значение true при включении FILESTREAM. Это позволяет оптимально выполнять репликацию данных FILESTREAM и уменьшить использование памяти. Чтобы принудительно заставить статьи таблицы FILESTREAM не использовать потоковую передачу объектов, установите значение false для параметра stream_blob_columns.

    Важное примечаниеВажно!

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

     

    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. От параметра threshold зависит, когда агент слияния назначит новый диапазон идентификаторов. Если превышен указанный процент использованных значений, агент слияния выделяет новый диапазон идентификаторов. Используется, когда параметру identityrangemanagementoption присвоено значение auto или когда значение параметра auto_identity_range равно true. Применяется только к статье таблицы. Дополнительные сведения см. в подразделе «Репликация слиянием» раздела Репликация столбцов идентификаторов.

    verify_resolver_signature

    1

    Для пользовательского сопоставителя проверяется цифровая подпись, чтобы убедиться, что он получен из надежного источника.

     

    0

    Для пользовательского сопоставителя цифровая подпись, подтверждающая, что он получен из надежного источника, не проверяется.

    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, означает, что изменения в статье слияния вызывают повторную инициализацию подписок, и дает разрешение на выполнение повторной инициализации подписки.

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

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

0 (успешное завершение) или 1 (неуспешное завершение)

Замечания

Хранимая процедура 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

При задании параметру partition_options значения 3 метаданные очищаются при запуске агента слияния, поэтому время действия секционированного снимка истекает быстрее. При использовании этого параметра следует разрешить запрошенный подписчиком секционированный снимок. Дополнительные сведения см. в разделе Моментальные снимки для публикаций слиянием с параметризованными фильтрами.

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

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

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

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

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

В следующей таблице описаны допустимые значения для аргумента 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.

См. также

Справочник

sp_addmergearticle (Transact-SQL)

sp_dropmergearticle (Transact-SQL)

sp_helpmergearticle (Transact-SQL)

Хранимые процедуры репликации (Transact-SQL)

Основные понятия

Просмотр и изменение свойств статьи

Изменение свойств публикации и статьи