Поделиться через


sp_addmergearticle (Transact-SQL)

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

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

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

Аргументы

  • [ @publication= ] 'publication'
    Имя публикации, которая содержит статью. Аргумент publication имеет тип sysname и не имеет значения по умолчанию.

  • [ @article= ] 'article'
    Имя статьи. Имя должно быть уникальным в пределах публикации. Аргумент article имеет тип sysname и не имеет значения по умолчанию. Статья article должна находиться на том же компьютере, что и Microsoft SQL Server, а ее имя должно соответствовать правилам для идентификаторов.

  • [ @source_object= ] 'source_object'
    Публикуемый объект базы данных. Аргумент source_object имеет тип sysname и не имеет значения по умолчанию. Дополнительные сведения о типах объектов, которые могут быть опубликованы репликацией слиянием, см. в разделе Публикация данных и объектов базы данных.

  • [ @type= ] 'type'
    Тип статьи. Аргумент type имеет тип sysname, значение по умолчанию table и может принимать одно из следующих значений.

    Значение

    Описание

    table (по умолчанию)

    Таблица со схемой и данными. Репликация проверяет таблицу, определяя данные, которые должны реплицироваться.

    func schema only

    Только функция со схемой.

    indexed viewschema only

    Только индексированное представление со схемой.

    proc schema only

    Только хранимая процедура со схемой.

    synonym schema only

    Только синоним со схемой.

    view schema only

    Только представление со схемой.

  • [ @description= ] 'description'
    Описание статьи. Аргумент description имеет тип nvarchar(255) и значение по умолчанию NULL.

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

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

    Если для обнаружения конфликтов применяется трассировка на уровне строк (по умолчанию), базовая таблица может содержать не более 1 024 столбцов, однако столбцы из статьи должны быть отфильтрованы, чтобы было опубликовано не более 246 столбцов. Если применяется трассировка на уровне столбцов, базовая таблица может содержать не более 246 столбцов. Дополнительные сведения об уровне трассировки см. в подразделе «Уровень трассировки» раздела Способы обнаружения и разрешения конфликтов, используемые при репликации слиянием.

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

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

    Значение

    Описание

    none

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

    delete

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

    drop (по умолчанию)

    Удаляет таблицу перед ее повторным созданием. Необходим для поддержки подписчиков Microsoft SQL Server Compact 3.5 с пакетом обновления 2 (SP2).

    truncate

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

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

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

    Сценарии создания не запускаются на подписчиках SQL Server Compact 3.5 с пакетом обновления 2 (SP2).

  • [ @schema_option= ] schema_option
    Битовая карта, определяющая параметры создания схемы для конкретной статьи. Аргумент schema_option имеет тип binary(8) и может быть сочетанием следующих значений, объединенных с помощью оператора | (побитовое ИЛИ).

    Значение

    Описание

    0x00

    Запрещает выполнение сценариев агентом моментальных снимков и использует сценарий предварительного создания схемы, указанной в аргументе creation_script.

    0x01

    Формирует создание объекта (CREATE TABLE, CREATE PROCEDURE и т. п.). Это значение по умолчанию для статей хранимых процедур.

    0x10

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

    0x20

    Преобразует определяемые пользователем типы данных (UDT) в базовые типы данных подписчика. Этот параметр не может использоваться, если на столбец UDT наложено ограничение CHECK или DEFAULT, если столбец UDT является частью первичного ключа или если вычисляемый столбец ссылается на столбец UDT.

    0x40

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

    0x80

    Реплицирует ограничения PRIMARY KEY. Любые индексы, связанные с ограничением, также реплицируются, даже если параметры 0x10 и 0x40 не включены.

    0x100

    Реплицирует пользовательские триггеры статьи таблицы, если они определены.

    0x200

    Реплицирует ограничения FOREIGN KEY. Если таблица, к которой происходит обращение, не является частью публикации, все ограничения FOREIGN KEY в опубликованной таблице не реплицируются.

    0x400

    Реплицирует ограничения CHECK.

    0x800

    Реплицирует значения по умолчанию.

    0x1000

    Реплицирует параметры сортировки на уровне столбцов.

    0x2000

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

    0x4000

    Реплицирует ограничения UNIQUE. Любые индексы, связанные с ограничением, также реплицируются, даже если параметры 0x10 и 0x40 не включены.

    0x8000

    Данный параметр недопустим для издателей, использующих SQL Server 2005 или более поздние версии.

    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. Сведения о сопоставлении этих типов см. в подразделе «Сопоставление новых типов данных для более ранних версий» раздела Использование нескольких версий SQL Server в топологии репликации.

    0x40000000

    Реплицирует разрешения.

    0x80000000

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

    0x100000000

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

    0x200000000

    Преобразует типы данных даты и времени (date, time, datetimeoffset и datetime2), которые появились в SQL Server 2008, в типы данных, поддерживаемые предыдущими версиями SQL Server. Сведения о сопоставлении этих типов см. в подразделе «Сопоставление новых типов данных для более ранних версий» раздела Использование нескольких версий 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, система автоматически создает допустимый параметр схемы для данной статьи. В таблице «Параметры схемы по умолчанию» в подразделе «Примечания» перечислены значения, которые выбираются исходя из типа статьи. Кроме того, не все значения аргумента schema_option допустимы для всех типов репликации и типов статей. В таблице «Допустимые параметры схемы», приведенной в разделе «Примечания», перечислены параметры, которые могут быть указаны для данного типа статьи.

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

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

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

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

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

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

  • [ @resolver_info= ] 'resolver_info'
    Используется для указания дополнительных сведений, необходимых пользовательскому сопоставителю конфликтов. Некоторым из сопоставителей конфликтов Майкрософт в качестве входного параметра требуется столбец. Аргумент resolver_info имеет тип nvarchar(255) и значение по умолчанию NULL. Дополнительные сведения см. в разделе Арбитры на базе технологии Microsoft COM.

  • [ @source_owner= ] 'source_owner'
    Имя владельца объекта source_object. Аргумент source_owner имеет тип sysname и значение по умолчанию NULL. Если значение равно NULL, то предполагается, что владельцем является текущий пользователь.

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

  • [ @vertical_partition= ] 'column_filter'
    Включает и выключает фильтрацию столбцов в статье таблицы. Аргумент vertical_partition имеет тип nvarchar(5) и значение по умолчанию FALSE.

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

    Значение true очищает все столбцы, кроме объявленного первичного ключа и столбцов ROWGUID. Добавление столбцов производится при помощи хранимой процедуры sp_mergearticlecolumn.

  • [ @auto_identity_range= ] 'automatic_identity_range'
    Включает и выключает автоматическую обработку диапазона идентификаторов для данной табличной статьи публикации во время ее создания. Аргумент auto_identity_range имеет тип nvarchar(5) и значение по умолчанию FALSE. Значение true включает автоматическую обработку диапазона идентификаторов, а значение false выключает.

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

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

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

  • [ @identity_range= ] identity_range
    Управляет размером диапазона идентификаторов, выделяемого для издателя и подписчика, если включено автоматическое управление диапазонами идентификаторов. Аргумент identity_range имеет тип bigint и значение по умолчанию NULL. Этот параметр обязателен, если аргумент identityrangemanagementoption имеет значение auto либо если аргумент auto_identity_range имеет значение true.

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

    Аргумент identity_range управляет размером диапазона идентификаторов на переиздающих подписчиках, использующих предыдущие версии SQL Server.

  • [ @threshold= ] threshold
    Процентное значение, управляющее процессом выделения агентом слияния нового диапазона идентификаторов. Если процентное отношение значений, указанное в аргументе threshold, уже использовано, агент слияния создает новый диапазон идентификаторов. Аргумент threshold имеет тип int и значение по умолчанию NULL. Этот параметр обязателен, если аргумент identityrangemanagementoption имеет значение auto либо если аргумент auto_identity_range имеет значение true.

  • [ @verify_resolver_signature= ] verify_resolver_signature
    Определяет, проверяется ли цифровая подпись для сопоставителя конфликтов в репликации слиянием. Аргумент verify_resolver_signature имеет тип int и значение по умолчанию 1.

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

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

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

  • [ @allow_interactive_resolver= ] 'allow_interactive_resolver'
    Разрешает или запрещает использование интерактивного сопоставителя конфликтов для данной статьи. Аргумент allow_interactive_resolver имеет тип nvarchar(5) и значение по умолчанию FALSE. Значение true разрешает использование интерактивного сопоставителя конфликтов для данной статьи, значение false запрещает.

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

    Интерактивный сопоставитель конфликтов не поддерживается подписчиками SQL Server Compact 3.5 с пакетом обновления 2 (SP2).

  • [ @fast_multicol_updateproc= ] 'fast_multicol_updateproc'
    Данный аргумент не рекомендуется к использованию, он поддерживается только для обратной совместимости сценариев.

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

    Значение

    Описание

    0x00 (по умолчанию)

    Разрешения не проверяются.

    0x10

    Проверяет разрешения на издателе перед передачей операций вставки, выполняемых на подписчике.

    0x20

    Проверяет разрешения на издателе перед передачей операций обновления, выполняемых на подписчике.

    0x40

    Проверяет разрешения на издателе перед передачей операций удаления, выполняемых на подписчике.

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

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

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

  • [ @published_in_tran_pub= ] 'published_in_tran_pub'
    Указывает, что статья публикации слиянием также опубликована в публикации транзакций. Аргумент published_in_tran_pub имеет тип nvarchar(5) и значение по умолчанию FALSE. Значение true указывает, что статья также опубликована в публикации транзакций.

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

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

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

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

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

    Значение false указывает, что используется обнаружение конфликтов по умолчанию, определяемое аргументом column_tracking. Дополнительные сведения см. в разделе Изменения группирования связанных строк с логическими записями.

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

    Поскольку логические записи не поддерживаются подписчиками выпуска SQL Server Compact 3.5 с пакетом обновления 2 (SP2), то для поддержки этих подписчиков необходимо указать для аргумента logical_record_level_conflict_detection значение false.

  • [ @logical_record_level_conflict_resolution= ] 'logical_record_level_conflict_resolution'
    Указывает уровень разрешения конфликтов для статьи, входящей в состав логической записи. Аргумент logical_record_level_conflict_resolution имеет тип nvarchar(5) и значение по умолчанию FALSE.

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

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

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

    Поскольку логические записи не поддерживаются подписчиками выпуска SQL Server Compact 3.5 с пакетом обновления 2 (SP2), то для поддержки этих подписчиков необходимо указать для аргумента logical_record_level_conflict_resolution значение false.

  • [ @partition_options= ] partition_options
    Определяет метод, при помощи которого производится секционирование статьи, позволяющее произвести оптимизацию производительности в случае, когда все строки принадлежат только одной секции или только одной подписке. Аргумент partition_options имеет тип tinyint и может принимать одно из следующих значений.

    Значение

    Описание

    0 (по умолчанию)

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

    1

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

    2

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

    3

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

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

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

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

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

    Значение

    Описание

    0 (по умолчанию)

    Без ограничений. Изменения, произведенные на подписчике, передаются на издатель.

    1

    Изменения на подписчике разрешены, но они не передаются на издатель.

    2

    Изменения на подписчике не разрешены.

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

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

  • [ @identityrangemanagementoption= ] 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= ] 'delete_tracking'
    Указывает, производится ли репликация операций удаления. Аргумент delete_tracking имеет тип nvarchar(5) и значение по умолчанию TRUE. Значение false указывает, что операции удаления не реплицируются, а значение true указывает, что операции удаления реплицируются, что является обычным поведением для репликации слиянием. Если значение аргумента delete_tracking равно false, строки, удаляемые на подписчике, должны быть вручную удалены на издателе, а строки, удаленные на издателе, должны быть вручную удалены на подписчике.

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

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

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

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

  • [ @compensate_for_errors= ] 'compensate_for_errors'
    Указывает, будут ли выполняться корректирующие действия, если во время синхронизации возникнут ошибки. Аргумент compensate_for_errors i имеет тип nvarchar(5) и значение по умолчанию FALSE. Если значение этого аргумента true, то изменения, которые при выполнении синхронизации не могут быть применены на подписчике или на издателе, всегда вызывают корректирующие действия по их отмене. Однако один неверно настроенный подписчик, формирующий ошибку, может быть причиной отката изменений на других подписчиках и издателях. Значение false отключает корректирующие действия, но при этом ошибки по-прежнему заносятся в журнал, и при последующих слияниях продолжаются попытки применить изменения до тех пор, пока они не завершатся успехом.

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

    Для подписок по запросу на подписчиках, использующих Microsoft SQL Server 2000 версии 8.00.858 и более ранних версий (включая пакет обновления 3), корректирующие действия выполняются даже с аргументом compensate_for_errors , равным false.

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

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

  • [ @stream_blob_columns= ] 'stream_blob_columns'
    Указывает, что оптимизация потока данных будет использоваться для репликации столбцов, содержащих большие двоичные объекты. Аргумент stream_blob_columns имеет тип nvarchar(5) и значение по умолчанию FALSE. Значение true указывает на то, что будут предприниматься попытки оптимизации. Аргумент stream_blob_columns устанавливается в значение true при включении FILESTREAM. Это позволяет репликация данных FILESTREAM для оптимального выполнения и сокращения использования памяти. Чтобы FILESTREAM не использовал потоковую передачу больших двоичных объектов для статей таблиц, с помощью хранимой процедуры sp_changemergearticle установите параметр stream_blob_columns в значение false.

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

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

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

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

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

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

Замечания

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

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

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

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

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

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

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

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

Тип статьи

Значение параметра схемы

func schema only

0x01

indexed view schema only

0x01

proc schema only

0x01

table

  • 0x0C034FD1 – совместимые с SQL Server 2005 и более поздними версиями публикации с собственным форматом моментального снимка.

  • 0x08034FF1 – совместимые с SQL Server 2005 и более поздними версиями публикации с символьным форматом моментального снимка.

  • 0x30034FF1 — Совместимые с SQL Server 2000 и более ранними версиями публикации.

view schema only

0x01

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

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

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

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