sp_addmergearticle (Transact-SQL)

Применимо к:SQL Server Управляемый экземпляр SQL Azure

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

sp_addmergearticle
    [ @publication = ] N'publication'
    , [ @article = ] N'article'
    , [ @source_object = ] N'source_object'
    [ , [ @type = ] N'type' ]
    [ , [ @description = ] N'description' ]
    [ , [ @column_tracking = ] N'column_tracking' ]
    [ , [ @status = ] N'status' ]
    [ , [ @pre_creation_cmd = ] N'pre_creation_cmd' ]
    [ , [ @creation_script = ] N'creation_script' ]
    [ , [ @schema_option = ] schema_option ]
    [ , [ @subset_filterclause = ] N'subset_filterclause' ]
    [ , [ @article_resolver = ] N'article_resolver' ]
    [ , [ @resolver_info = ] N'resolver_info' ]
    [ , [ @source_owner = ] N'source_owner' ]
    [ , [ @destination_owner = ] N'destination_owner' ]
    [ , [ @vertical_partition = ] N'vertical_partition' ]
    [ , [ @auto_identity_range = ] N'auto_identity_range' ]
    [ , [ @pub_identity_range = ] pub_identity_range ]
    [ , [ @identity_range = ] identity_range ]
    [ , [ @threshold = ] threshold ]
    [ , [ @verify_resolver_signature = ] verify_resolver_signature ]
    [ , [ @destination_object = ] N'destination_object' ]
    [ , [ @allow_interactive_resolver = ] N'allow_interactive_resolver' ]
    [ , [ @fast_multicol_updateproc = ] N'fast_multicol_updateproc' ]
    [ , [ @check_permissions = ] check_permissions ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @published_in_tran_pub = ] N'published_in_tran_pub' ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
    [ , [ @logical_record_level_conflict_detection = ] N'logical_record_level_conflict_detection' ]
    [ , [ @logical_record_level_conflict_resolution = ] N'logical_record_level_conflict_resolution' ]
    [ , [ @partition_options = ] partition_options ]
    [ , [ @processing_order = ] processing_order ]
    [ , [ @subscriber_upload_options = ] subscriber_upload_options ]
    [ , [ @identityrangemanagementoption = ] N'identityrangemanagementoption' ]
    [ , [ @delete_tracking = ] N'delete_tracking' ]
    [ , [ @compensate_for_errors = ] N'compensate_for_errors' ]
    [ , [ @stream_blob_columns = ] N'stream_blob_columns' ]
[ ; ]

Аргументы

[ @publication = ] N'publication'

Имя публикации, содержащей статью. @publication — sysname без значения по умолчанию.

[ @article = ] N'article'

Имя статьи. Имя должно быть уникальным в пределах публикации. @article — sysname без значения по умолчанию. @article должен находиться на локальном компьютере под управлением SQL Server и должен соответствовать правилам для идентификаторов.

[ @source_object = ] N'source_object'

Объект базы данных, который будет опубликован. @source_object — sysname без значения по умолчанию. Дополнительные сведения о типах объектов, которые можно опубликовать с помощью слияния реплика tion, см. в разделе "Публикация данных и объектов базы данных".

[ @type = ] N'type'

Тип статьи. @type — sysname, значение по умолчанию tableи может быть одним из следующих значений.

значение Описание
table (по умолчанию) Таблица со схемой и данными. Репликация проверяет таблицу, определяя данные, которые должны реплицироваться.
func schema only Только функция со схемой.
indexed view schema only Только индексированное представление со схемой.
proc schema only Только хранимая процедура со схемой.
synonym schema only Только синоним со схемой.
view schema only Только представление со схемой.

[ @description = ] N'description'

Описание статьи. @description имеет значение nvarchar(255) с значением по умолчаниюNULL.

[ @column_tracking = ] N'column_tracking'

Параметр отслеживания на уровне столбцов. @column_tracking — nvarchar(10) с значением по умолчаниюfalse. false включает отслеживание столбцов. false отключает отслеживание столбцов и оставляет обнаружение конфликтов на уровне строки. Если таблица уже опубликована в других публикациях слиянием, необходимо использовать для параметра отслеживания столбца то же значение, что и для существующих статей, основанных на данной таблице. Этот параметр применим только для статей таблиц.

Примечание.

Если для обнаружения конфликтов применяется трассировка на уровне строк (по умолчанию), базовая таблица может содержать не более 1024 столбцов, однако столбцы из статьи должны быть отфильтрованы, чтобы было опубликовано не более 246 столбцов. Если применяется трассировка на уровне столбцов, базовая таблица может содержать не более 246 столбцов.

[ @status = ] N'status'

Состояние статьи. @status — nvarchar(10) с значением по умолчаниюunsynced. Если activeвыполняется начальный скрипт обработки для публикации таблицы. Если unsyncedначальный скрипт обработки для публикации таблицы запускается при следующем запуске агент моментальных снимков.

[ @pre_creation_cmd = ] N'pre_creation_cmd'

Указывает действие системы, если во время применения моментального снимка таблица уже существует на подписчике. @pre_creation_cmd — nvarchar(10) и может быть одним из следующих значений.

значение Описание
none Если таблица на подписчике уже существует, не выполняется никаких действий.
delete Выполняет удаление, используя предложение WHERE, указанное в фильтре подмножества.
drop (по умолчанию) Удаляет таблицу перед ее повторным созданием. Требуется для поддержки подписчиков SQL Server Compact.
truncate Усекает целевую таблицу.

[ @creation_script = ] N'creation_script'

Путь и имя необязательного сценария схемы статьи, используемого для создания статьи в базе данных подписки. @creation_script — nvarchar(255) с значением по умолчаниюNULL.

Примечание.

Скрипты создания не выполняются в подписчиках SQL Server Compact.

[ @schema_option = ] schema_option

Растровое изображение параметра создания схемы для данной статьи. @schema_option является varbinary(8), и может быть | (битовое ИЛИ) продукт одного или нескольких из этих значений.

значение Описание
0x00 Отключает скрипты агент моментальных снимков и использует предоставленный скрипт предварительного создания схемы, определенный в @creation_script.
0x01 Создает создание объекта (CREATE TABLECREATE PROCEDUREи т. д.). Это значение по умолчанию для статей хранимых процедур.
0x10 Создает соответствующий кластеризованный индекс. Даже если этот параметр не задан, индексы, связанные с первичными ключами и UNIQUE ограничениями, создаются, если они уже определены в опубликованной таблице.
0x20 Преобразует определяемые пользователем типы данных (UDT) в базовые типы данных подписчика. Этот параметр нельзя использовать при наличии ограничения CHECK или DEFAULT для столбца UDT, если столбец UDT является частью первичного ключа или если вычисляемый столбец ссылается на столбец UDT.
0x40 Создает соответствующие некластеризованные индексы. Даже если этот параметр не задан, индексы, связанные с первичными ключами и UNIQUE ограничениями, создаются, если они уже определены в опубликованной таблице.
0x80 Реплицирует PRIMARY KEY ограничения. Все индексы, связанные с ограничением, также реплика, даже если параметры 0x10 и 0x40 не включены.
0x100 Реплицирует пользовательские триггеры для статьи таблицы, если заданы.
0x200 Реплицирует FOREIGN KEY ограничения. Если указанная таблица не является частью публикации, все FOREIGN KEY ограничения для опубликованной таблицы не реплика.
0x400 Реплицирует CHECK ограничения.
0x800 Реплицирует значения по умолчанию.
0x1000 Реплицирует параметры сортировки на уровне столбцов.
0x2000 Реплицирует расширенные свойства, связанные с исходным объектом опубликованной статьи.
0x4000 Реплицирует UNIQUE ограничения. Все индексы, связанные с ограничением, также реплика, даже если параметры 0x10 и 0x40 не включены.
0x8000 Этот параметр недействителен для издателей под управлением SQL Server 2005 (9.x) и более поздних версий.
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 Используйте этот параметр, чтобы реплика te FILESTREAM атрибут, если он указан в столбцах varbinary(max). Не указывайте этот параметр, если вы реплика таблицы подписчикам SQL Server 2005 (9.x). Репликация таблиц с столбцами FILESTREAM в подписчики SQL Server 2000 (8.x) не поддерживается независимо от того, как задан этот параметр схемы. См. соответствующий параметр 0x800000000.
0x200000000 Преобразует типы данных даты и времени (date, time, datetimeoffset и datetime2), представленные в SQL Server 2008 (10.0.x), в типы данных, поддерживаемые в более ранних версиях SQL Server.
0x400000000 Проводит репликацию параметра сжатия для данных и индексов. Дополнительные сведения см. в разделе Сжатие данных.
0x800000000 Задайте этот параметр для сохранения данных атрибута FILESTREAM в его файловой группе на подписчике. Если этот параметр не задан, данные FILESTREAM хранятся в файловой группе по умолчанию. Репликация не создает файловые группы; Таким образом, если этот параметр задан, необходимо создать файловую группу перед применением моментального снимка на подписчике. Дополнительные сведения о создании объектов перед применением моментального снимка см. в разделе "Выполнение скриптов до и после применения моментального снимка".

См. соответствующий параметр 0x100000000.
0x1000000000 Преобразует определяемые пользователем типы среды CLR в varbinary(max), чтобы столбцы типа UDT можно реплика подписчикам, работающим под управлением SQL Server 2005 (9.x).
0x2000000000 Преобразует тип данных hierarchyid в varbinary(max), чтобы столбцы иерархии типов можно реплика для подписчиков, работающих под управлением SQL Server 2005 (9.x). Дополнительные сведения об использовании столбцов hierarchyid в реплика таблицах см. в справочнике по методу типа данных hierarchyid.
0x4000000000 Проводит репликацию всех фильтруемых индексов для таблицы. Дополнительные сведения о фильтруемых индексах см. в статье Создание фильтруемых индексов.
0x8000000000 Преобразует типы данных geography и geometry в varbinary(max), чтобы столбцы этих типов можно реплика для подписчиков, работающих под управлением SQL Server 2005 (9.x).
0x10000000000 Реплицирует индексы по столбцам типа geography и geometry.

Если это значение равно NULL, система автоматически создает допустимый параметр схемы для статьи. Таблица параметров схемы по умолчанию показывает значение, выбранное на основе типа статьи. Кроме того, не все значения @schema_option допустимы для каждого типа реплика и типа статьи. В таблице параметров допустимой схемы показаны параметры, которые можно указать для заданного типа статьи.

Примечание.

Параметр @schema_option влияет только на параметры реплика tion для начального моментального снимка. После создания начальной схемы агент моментальных снимков и применения на подписчике реплика изменения схемы публикации на основе правил изменения схемы реплика схемы и параметра @репликаte_ddl, указанного в sp_addmergepublication. Дополнительные сведения см. в статье Внесение изменений в схемы баз данных публикации.

[ @subset_filterclause = ] N'subset_filterclause'

Предложение WHERE, указывающее горизонтальное фильтрацию статьи таблицы без включенного слова WHERE. @subset_filterclause — nvarchar(1000) с пустой строкой по умолчанию.

Важно!

По соображениям производительности рекомендуется не применять функции к именам столбцов в предложениях фильтра строк параметризованной строки, например LEFT([MyColumn]) = SUSER_SNAME(). Если вы используете HOST_NAME в предложении фильтра и переопределяете HOST_NAME значение, может потребоваться преобразовать типы данных с помощью CONVERT. Дополнительные сведения о рекомендациях по этому делу см. в разделе "Переопределение значения HOST_NAME() в параметризованных фильтрах — параметризованные фильтры строк.

[ @article_resolver = ] N'article_resolver'

Сопоставитель на основе COM, используемый для устранения конфликтов в таблице или сборки платформа .NET Framework, вызываемой для выполнения пользовательской бизнес-логики в статье таблицы. @article_resolver — nvarchar(255) с значением по умолчаниюNULL. Доступные значения этого параметра перечислены в пользовательских сопоставителях Майкрософт. Если указанное значение не является одним из сопоставителей Майкрософт, SQL Server использует указанный сопоставитель вместо предоставленного системой сопоставителя. Используется sp_enumcustomresolvers для перечисления списка доступных настраиваемых сопоставителей. Дополнительные сведения см. в разделе «Выполнение бизнес-логики во время синхронизации слияния» и расширенной репликации слиянием — обнаружение конфликтов и разрешение.

[ @resolver_info = ] N'resolver_info'

Используется для указания дополнительных сведений, необходимых пользовательскому сопоставителям. Для некоторых средств разрешения Майкрософт требуется столбец, предоставленный в качестве входных данных для сопоставителя. @resolver_info — nvarchar(517) с значением по умолчаниюNULL. Дополнительные сведения см. в разделе "Расширенный конфликт репликации слиянием" — com-разрешения.

[ @source_owner = ] N'source_owner'

Имя владельца @source_object. @source_owner — sysname с значением по умолчаниюNULL. Если NULLтекущий пользователь считается владельцем.

[ @destination_owner = ] N'destination_owner'

Владелец объекта в базе данных подписки, если нет dbo. @destination_owner — sysname с значением по умолчаниюNULL. Если NULLпредполагается, dbo что он является владельцем.

[ @vertical_partition = ] N'vertical_partition'

Включает и выключает фильтрацию столбцов в статье таблицы. @vertical_partition — nvarchar(5) с значением по умолчаниюfalse.

  • false указывает, что вертикальная фильтрация отсутствует и публикует все столбцы.

  • false очищает все столбцы, кроме объявленного первичного ключа и ROWGUID столбцов. Столбцы добавляются с помощью sp_mergearticlecolumn.

[ @auto_identity_range = ] N'auto_identity_range'

Включает и отключает автоматическую обработку диапазона удостоверений для этой таблицы в публикации во время ее создания. @auto_identity_range — nvarchar(5) с значением по умолчаниюNULL. false включает автоматическую обработку диапазона удостоверений, а также false отключает ее.

Примечание.

Этот параметр устарел и поддерживается для обратной совместимости скриптов. Для указания параметров управления диапазоном удостоверений следует использовать @identityrangemanagementoption . Дополнительные сведения см. в статье Репликация столбцов идентификаторов.

[ @pub_identity_range = ] pub_identity_range

Управляет размером диапазона идентификаторов, выделенного подписчику с серверной подпиской, когда включено автоматическое управление диапазонами идентификаторов. Этот диапазон идентификаторов резервируется переиздающему подписчику для выделения собственным подписчикам. @pub_identity_range является bigint, с значением по умолчаниюNULL. Этот параметр необходимо указать, если @identityrangemanagementoption есть auto или false@auto_identity_range.

[ @identity_range = ] identity_range

Управляет размером диапазона идентификаторов, выделяемого для издателя и подписчика, если включено автоматическое управление диапазонами идентификаторов. @identity_range имеет большой размер с значением по умолчаниюNULL. Этот параметр необходимо указать, если @identityrangemanagementoption есть auto или false@auto_identity_range.

Примечание.

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

[ @threshold = ] пороговое значение

Процентное значение, управляющее процессом выделения агентом слияния нового диапазона идентификаторов. Если используется процент значений, указанных в @threshold, агент слияния создает новый диапазон удостоверений. @threshold имеет значение int с значением по умолчаниюNULL. Этот параметр необходимо указать, если @identityrangemanagementoption есть auto или false@auto_identity_range.

[ @verify_resolver_signature = ] verify_resolver_signature

Перед использованием сопоставителя в репликации слиянием определяет, проверена ли цифровая подпись. @verify_resolver_signature имеет значение int с значением по умолчанию1.

  • 0 указывает, что подпись не проверена.

  • 1 указывает, что подпись проверяется, является ли она из доверенного источника.

[ @destination_object = ] N'destination_object'

Имя объекта в базе данных подписки. @destination_object — sysname, значением по умолчанию является то, что находится в @source_object. Этот аргумент может быть указан только для статей типа «только схема», например для статей хранимых процедур, представлений или пользовательских функций. Если указанная статья является таблицей, значение в @source_object переопределяет значение в @destination_object.

[ @allow_interactive_resolver = ] N'allow_interactive_resolver'

Разрешает или запрещает использование интерактивного арбитра конфликтов для данной статьи. @allow_interactive_resolver — nvarchar(5) с значением по умолчаниюfalse. false включает использование интерактивного сопоставителя в статье; false отключает его.

Примечание.

Интерактивный сопоставитель не поддерживается подписчиками SQL Server Compact.

[ @fast_multicol_updateproc = ] N'fast_multicol_updateproc'

Этот параметр устарел и поддерживается для обратной совместимости скриптов.

[ @check_permissions = ] проверка_permissions

Растровое изображение разрешений на уровне таблицы, которые проверяются, когда агент слияния применяет изменения к издателю. Если учетная запись издателя, используемая процессом слияния, не имеет правильных разрешений на таблицу, недопустимые изменения регистрируются как конфликты. @проверка_permissions является int, и может быть | (битовое ИЛИ) продукт одного или нескольких из следующих значений.

значение Описание
0x00 (по умолчанию) Разрешения не проверка.
0x10 Проверяет разрешения на издателе перед передачей операций вставки, выполняемых на подписчике.
0x20 Проверяет разрешения на издателе перед передачей операций обновления, выполняемых на подписчике.
0x40 Проверяет разрешения на издателе перед передачей операций удаления, выполняемых на подписчике.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

Подтверждает, что действие, выполненное этой хранимой процедурой, может сделать недействительным существующий моментальный снимок. @force_invalidate_snapshot бит с значением по умолчанию0.

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

  • 1 указывает, что добавление статьи может привести к недопустимому моментальному снимку, и если существуют существующие подписки, требующие нового моментального снимка, дает разрешение на добавление существующего моментального снимка как устаревшего и создания нового моментального снимка. @force_invalidate_snapshot задано 1 при добавлении статьи в публикацию с существующим моментальным снимком.

[ @published_in_tran_pub = ] N'published_in_tran_pub'

Показывает, что статья в публикации слиянием также опубликована в публикации транзакций. @published_in_tran_pub — nvarchar(5) с значением по умолчаниюfalse. false указывает, что статья также публикуется в публикации транзакций.

[ @force_reinit_subscription = ] force_reinit_subscription

Подтверждает, что действие, выполняемое данной хранимой процедурой, может сделать необходимой повторную инициализацию существующих подписок. @force_reinit_subscription бит с значением по умолчанию0.

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

  • 1 означает, что изменения в статье слиянием приводят к повторной инициализации существующих подписок и предоставляют разрешение на повторную инициализацию подписки. @force_reinit_subscription задано1, если @subset_filterclause задает параметризованный фильтр строк.

[ @logical_record_level_conflict_detection = ] N'logical_record_level_conflict_detection'

Указывает уровень обнаружения конфликтов для статьи, входящей в состав логической записи. @logical_record_level_conflict_detection — nvarchar(5) с значением по умолчаниюfalse.

Примечание.

Так как логические записи не поддерживаются подписчиками SQL Server Compact, необходимо указать значение false для @logical_record_level_conflict_detection для поддержки этих подписчиков.

[ @logical_record_level_conflict_resolution = ] N'logical_record_level_conflict_resolution'

Указывает уровень устранения конфликтов для статьи, входящей в состав логической записи. @logical_record_level_conflict_resolution — nvarchar(5) с значением по умолчаниюfalse.

  • false указывает, что вся логическая запись победы перезаписывает логическую запись.

  • false указывает, что выигрышные строки не ограничены логическими записями.

Если @logical_record_level_conflict_detection естьfalse, то @logical_record_level_conflict_resolution также необходимо задать.false Дополнительные сведения см. в статье Группирование изменений в связанных строках с помощью логических записей.

Примечание.

Так как логические записи не поддерживаются подписчиками SQL Server Compact, необходимо указать значение false для @logical_record_level_conflict_resolution для поддержки этих подписчиков.

[ @partition_options = ] partition_options

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

значение Описание
0 (по умолчанию) Фильтрация для статьи является статической или не дает уникального подмножества данных для каждой секции, то есть "перекрывающейся" секции.
1 Секции перекрываются, а обновления языка обработки данных (DML), сделанные на подписчике, не могут изменить секцию, к которой принадлежит строка.
2 Фильтрация для статьи дает неперекрывающиеся секции, но несколько подписчиков могут получить одну и ту же секцию.
3 Фильтрация для статьи дает неперекрывающиеся секции, уникальные для каждой из подписок.

Примечание.

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

[ @processing_order = ] processing_order

Показывает порядок обработки статей в публикации слиянием. @processing_order имеет значение int с значением по умолчанию0. 0 указывает, что статья не упорядочена, а любое другое значение представляет порядковое значение порядка обработки для этой статьи. Статьи обрабатываются по номерам, от меньших к большим. Если две статьи имеют одинаковое значение, порядок обработки определяется порядком псевдонима статьи в системной таблице sysmergearticles . Дополнительные сведения см. в разделе Указание свойств репликации слиянием.

[ @subscriber_upload_options = ] subscriber_upload_options

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

значение Описание
0 (по умолчанию) Без ограничений. Изменения, произведенные на подписчике, передаются на издатель.
1 Изменения разрешены на подписчике, но они не отправляются издателю.
2 Изменения не допускаются на подписчике.

Изменение @subscriber_upload_options требует повторной инициализации подписки путем вызова sp_reinitmergepullsubscription (Transact-SQL).

Примечание.

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

[ @identityrangemanagementoption = ] N'identityrangemanagementoption'

Указывает способ управления диапазоном идентификаторов для статьи. @identityrangemanagementoption — nvarchar(10) и может быть одним из следующих значений.

значение Описание
none Запрещает управление диапазонами идентификаторов.
manual Помечает столбец идентификаторов как NOT FOR REPLICATION, чтобы разрешить ручное управление диапазонами идентификаторов.
auto Задает автоматическое управление диапазонами идентификаторов.
NULL (по умолчанию) По умолчанию используется none , если значение @auto_identity_range не trueявляется.

Для обратной совместимости, если значение @identityrangemanagementoption равноNULL, значение @auto_identity_range проверка. Однако если значение @identityrangemanagementoption не NULLравно, то значение @auto_identity_range игнорируется. Дополнительные сведения см. в статье Репликация столбцов идентификаторов.

[ @delete_tracking = ] N'delete_tracking'

Указывает, являются ли удаления реплицируемыми. @delete_tracking — nvarchar(5) с значением по умолчаниюtrue. falseуказывает, что удаления не реплика реплика и true указывают на то, что удаления реплика реплика, что является обычным поведением для слияния реплика tion. Если задано falseзначение @delete_tracking, строки, удаленные на подписчике, должны быть удалены вручную на издателе, а строки, удаленные на издателе, должны быть удалены вручную на подписчике.

Важно!

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

Примечание.

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

[ @compensate_for_errors = ] N'compensate_for_errors'

Указывает, будут ли выполняться корректирующие действия, если во время синхронизации возникнут ошибки: @compensate_for_errors — nvarchar(5) с значением по умолчаниюfalse. Если задано значение true, изменения, которые не могут применяться на подписчике или издателе во время синхронизации, всегда приводят к компенсирующим действиям, чтобы отменить изменение. Однако один неправильно настроенный подписчик, который создает ошибку, может привести к изменению других подписчиков и издателей, которые будут отменены. false Отключает эти компенсирующие действия, однако ошибки по-прежнему регистрируются, как с компенсацией, а последующие слияния продолжают пытаться применить изменения до тех пор, пока не будет успешно выполнено.

Важно!

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

[ @stream_blob_columns = ] N'stream_blob_columns'

Указывает, производится ли оптимизация потока данных при репликации столбцов больших двоичных объектов. @stream_blob_columns — nvarchar(5) с значением по умолчаниюfalse. true означает, что будет предпринята попытка оптимизации. @stream_blob_columns задано значение true при включении FILESTREAM. Это позволяет оптимально выполнять репликацию данных FILESTREAM и уменьшить использование памяти. Чтобы принудительно использовать потоковую передачу BLOB-объектов, @stream_blob_columns используйте sp_changemergearticleдля принудительного использования таблиц FILESTREAM значение false.

Важно!

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

Примечание.

Некоторые функции слияния реплика tion, такие как логические записи, по-прежнему могут препятствовать использованию оптимизации потока при реплика реплика больших объектов даже с @stream_blob_columns задано значение true.

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

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

Замечания

sp_addmergearticleиспользуется в слиянии реплика tion.

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

Если указать значение 3 для @partition_options:

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

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

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

При указании @processing_order рекомендуется оставить пробелы между значениями порядка статей, что упрощает настройку новых значений в будущем. Например, если у вас есть три статьи, Article1и , задайте для @processing_order 10 значение , 20а не , 2а 30не 1, и 3.Article3Article2 Дополнительные сведения см. в разделе Указание свойств репликации слиянием.

Таблица параметров схемы по умолчанию

В этой таблице описывается значение по умолчанию, которое задает хранимая процедура, если для @schema_option указано значение, которое NULL зависит от типа статьи.

Тип статьи Значение параметра схемы
func schema only 0x01
indexed view schema only 0x01
proc schema only 0x01
table 0x0C034FD1 — SQL Server 2005 (9.x) и более поздних совместимых публикаций с моментальным снимком собственного режима.

0x08034FF1 — SQL Server 2005 (9.x) и более поздних совместимых публикаций с моментальным снимком режима символов.
view schema only 0x01

Примечание.

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

Допустимая таблица параметров схемы

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

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

Примеры

DECLARE @publication AS sysname;
DECLARE @table1 AS sysname;
DECLARE @table2 AS sysname;
DECLARE @table3 AS sysname;
DECLARE @salesschema AS sysname;
DECLARE @hrschema AS sysname;
DECLARE @filterclause AS nvarchar(1000);
SET @publication = N'AdvWorksSalesOrdersMerge'; 
SET @table1 = N'Employee'; 
SET @table2 = N'SalesOrderHeader'; 
SET @table3 = N'SalesOrderDetail'; 
SET @salesschema = N'Sales';
SET @hrschema = N'HumanResources';
SET @filterclause = N'Employee.LoginID = HOST_NAME()';

-- Add a filtered article for the Employee table.
EXEC sp_addmergearticle 
  @publication = @publication, 
  @article = @table1, 
  @source_object = @table1, 
  @type = N'table', 
  @source_owner = @hrschema,
  @schema_option = 0x0004CF1,
  @description = N'article for the Employee table',
  @subset_filterclause = @filterclause;

-- Add an article for the SalesOrderHeader table that is filtered
-- based on Employee and horizontally filtered.
EXEC sp_addmergearticle 
  @publication = @publication, 
  @article = @table2, 
  @source_object = @table2, 
  @type = N'table', 
  @source_owner = @salesschema, 
  @vertical_partition = N'true',
  @schema_option = 0x0034EF1,
  @description = N'article for the SalesOrderDetail table';

-- Add an article for the SalesOrderDetail table that is filtered
-- based on SaledOrderHeader.
EXEC sp_addmergearticle 
  @publication = @publication, 
  @article = @table3, 
  @source_object = @table3, 
  @source_owner = @salesschema,
  @description = 'article for the SalesOrderHeader table', 
  @identityrangemanagementoption = N'auto', 
  @pub_identity_range = 100000, 
  @identity_range = 100, 
  @threshold = 80,
  @schema_option = 0x0004EF1;

-- Add all columns to the SalesOrderHeader article.
EXEC sp_mergearticlecolumn 
  @publication = @publication, 
  @article = @table2, 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Remove the credit card Approval Code column.
EXEC sp_mergearticlecolumn 
  @publication = @publication, 
  @article = @table2, 
  @column = N'CreditCardApprovalCode', 
  @operation = N'drop', 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Add a merge join filter between Employee and SalesOrderHeader.
EXEC sp_addmergefilter 
  @publication = @publication, 
  @article = @table2, 
  @filtername = N'SalesOrderHeader_Employee', 
  @join_articlename = @table1, 
  @join_filterclause = N'Employee.BusinessEntityID = SalesOrderHeader.SalesPersonID', 
  @join_unique_key = 1, 
  @filter_type = 1, 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;

-- Add a merge join filter between SalesOrderHeader and SalesOrderDetail.
EXEC sp_addmergefilter 
  @publication = @publication, 
  @article = @table3, 
  @filtername = N'SalesOrderDetail_SalesOrderHeader', 
  @join_articlename = @table2, 
  @join_filterclause = N'SalesOrderHeader.SalesOrderID = SalesOrderDetail.SalesOrderID', 
  @join_unique_key = 1, 
  @filter_type = 1, 
  @force_invalidate_snapshot = 1, 
  @force_reinit_subscription = 1;
GO

Разрешения

Необходимо быть членом предопределенной роли сервера sysadmin или предопределенной роли базы данных db_owner .