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


sp_addmergearticle (Transact-SQL)

Изменения: 14 апреля 2006 г.

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

Значок ссылки на разделСинтаксические обозначения в 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 view schema 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 выключает отслеживание столбцов, обнаружение конфликтов остается на уровне строк. Если таблица уже опубликована в других публикациях слиянием, необходимо использовать для параметра отслеживания столбца то же значение, что и для существующих статей, основанных на данной таблице. Этот аргумент применим только для статей таблиц.

    ms174329.note(ru-ru,SQL.90).gifПримечание.
    Если для обнаружения конфликтов применяется трассировка на уровне строк (по умолчанию), базовая таблица может содержать не более 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 2005 Compact Edition.

    truncate

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

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

    ms174329.note(ru-ru,SQL.90).gifПримечание.
    Сценарии создания не запускаются на подписчиках SQL Server 2005 Compact Edition.
  • [ @schema_option= ] schema_option
    Битовая карта, определяющая параметры создания схемы для конкретной статьи. Аргумент schema_option имеет тип binary(8) и может быть сочетанием следующих значений, объединенных с помощью оператора | (побитовое ИЛИ).

    Значение

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

    ms174329.note(ru-ru,SQL.90).gifВажно!
    По соображениям производительности в предложениях параметризованных фильтров строк не рекомендуется применять функции к именам столбцов, например: 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 выключает.

    ms174329.note(ru-ru,SQL.90).gifПримечание.
    Аргумент 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.

    ms174329.note(ru-ru,SQL.90).gifПримечание.
    Аргумент 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 запрещает.

    ms174329.note(ru-ru,SQL.90).gifПримечание.
    Интерактивный арбитр конфликтов не поддерживается подписчиками SQL Server 2005 Compact Edition.
  • [ @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. Дополнительные сведения см. в разделе Изменения группирования связанных строк с логическими записями.

    ms174329.note(ru-ru,SQL.90).gifПримечание.
    Поскольку логические записи не поддерживаются подписчиками SQL Server 2005 Compact Edition, для поддержки этих подписчиков необходимо указать false в качестве значения аргумента logical_record_level_conflict_detection.
  • [ @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. Дополнительные сведения см. в разделе Изменения группирования связанных строк с логическими записями.

    ms174329.note(ru-ru,SQL.90).gifПримечание.
    Поскольку логические записи не поддерживаются подписчиками SQL Server 2005 Compact Edition, для поддержки этих подписчиков необходимо указать false в качестве значения аргумента logical_record_level_conflict_resolution.
  • [ @partition_options= ] partition_options
    Определяет метод, при помощи которого производится секционирование статьи, позволяющее произвести оптимизацию производительности в случае, когда все строки принадлежат только одной секции или только одной подписке. Аргумент partition_options имеет тип tinyint и может принимать одно из следующих значений.

    Значение Описание

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

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

    1

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

    2

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

    3

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

    ms174329.note(ru-ru,SQL.90).gifПримечание.
    Если исходная таблица для статьи уже опубликована в другой публикации, значение аргумента 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

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

    ms174329.note(ru-ru,SQL.90).gifПримечание.
    Если исходная таблица для статьи уже опубликована в другой публикации, значение аргумента 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, строки, удаляемые на подписчике, должны быть вручную удалены на издателе, а строки, удаленные на издателе, должны быть вручную удалены на подписчике.

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

    ms174329.note(ru-ru,SQL.90).gifПримечание.
    Для подписок по запросу на подписчиках, использующих Microsoft SQL Server 2000 версии 8.00.858 и более ранних версий (включая пакет обновления 3), корректирующие действия выполняются даже с аргументом compensate_for_errors , равным false.
    ms174329.note(ru-ru,SQL.90).gifВажно!
    Даже если данные в измененных строках неконвергентны, то, если исправить все ошибки, изменения можно применить и добиться конвергенции данных. Если исходная таблица для статьи уже опубликована в другой публикации, значение аргумента compensate_for_errors должно быть одинаковым для обеих статей.
  • [ @stream_blob_columns= ] 'stream_blob_columns'
    Указывает, что при репликации столбцов больших двоичных объектов может быть использована оптимизация потока данных. Аргумент stream_blob_columns имеет тип nvarchar(5) и значение по умолчанию FALSE. Значение true означает, что будет выполнена попытка произвести оптимизацию.

    ms174329.note(ru-ru,SQL.90).gifВажно!
    Включение данного режима оптимизации памяти может уменьшить производительность агента слияния во время синхронизации. Этот параметр должен использоваться только при репликации столбцов, содержащих мегабайты данных.
    ms174329.note(ru-ru,SQL.90).gifПримечание.
    Некоторые возможности репликации слиянием, например логические записи, могут воспрепятствовать включению потоковой оптимизации при репликации больших двоичных объектов, даже если значение аргумента stream_blob_columns равно true.

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

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

Замечания

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

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

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

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

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

При указании аргумента processing_order рекомендуется оставлять зазоры между порядковыми значениями статей, поскольку это облегчит присвоение статьям новых значений аргумента в будущем. Например, имеется три статьи: Статья1, Статья2 и Статья3. Присвойте аргументу 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

ms174329.note(ru-ru,SQL.90).gifПримечание.
Если публикация поддерживает ранние версии 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

Разрешения

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

Пример

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.EmployeeID = 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

См. также

Справочник

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

Другие ресурсы

How to: Define an Article (Replication Transact-SQL Programming)
Публикация данных и объектов базы данных
Репликация столбцов идентификаторов
Способы обнаружения и разрешения конфликтов, используемые при репликации слиянием

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

14 апреля 2006 г.

Измененное содержимое
  • Обновлено описание значения 0x20000000 параметра schema_option.

5 декабря 2005 г.

Добавления
  • Описаны дополнительные ограничения, возникающие при установке значения 0x20 для аргумента schema_option.
  • Задокументированы ограничения на столбцы для публикуемых таблиц.
Измененное содержимое
  • Обновлены сведения о значении параметра схемы по умолчанию для статей таблицы.