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 без значения по умолчанию. Дополнительные сведения о типах объектов, которые могут быть опубликованы с помощью репликации слиянием, см. в разделе "Публикация данных и объектов базы данных".
[ @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 TABLE CREATE 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 |
Используйте этот параметр для репликации атрибута 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 (UDT) в 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 влияет только на параметры репликации для начального моментального снимка. После создания начальной схемы агент моментальных снимков и применения на подписчике репликация схемы публикации изменяется на подписчике на основе правил репликации изменений схемы и параметра @replicate_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 = ] check_permissions
Растровое изображение разрешений на уровне таблицы, которые проверяются, когда агент слияния применяет изменения к издателю. Если учетная запись издателя, используемая процессом слияния, не имеет правильных разрешений на таблицу, недопустимые изменения регистрируются как конфликты. @check_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
.
false
указывает, что конфликт обнаруживается, если изменения внесены в логическую запись.false
указывает, что обнаружение конфликтов по умолчанию используется в соответствии с @column_tracking. Дополнительные сведения см. в статье Группирование изменений в связанных строках с помощью логических записей.
Примечание.
Так как логические записи не поддерживаются подписчиками 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.
Примечание.
Если исходная таблица для статьи уже опубликована в другой публикации, то значение параметра @subscriber_upload_options должно быть одинаковым для обеих статей.
[ @identityrangemanagementoption = ] N'identityrangemanagementoption'
Указывает способ управления диапазоном идентификаторов для статьи. @identityrangemanagementoption — nvarchar(10) и может быть одним из следующих значений.
значение | Описание |
---|---|
none |
Запрещает управление диапазонами идентификаторов. |
manual |
Помечает столбец идентификаторов как NOT FOR REPLICATION, чтобы разрешить ручное управление диапазонами идентификаторов. |
auto |
Задает автоматическое управление диапазонами идентификаторов. |
NULL (по умолчанию) |
По умолчанию используется none , если значение @auto_identity_range не true является. |
Для обратной совместимости при значении @identityrangemanagementoption проверяется значение @auto_identity_rangeNULL
. Однако если значение @identityrangemanagementoption не NULL
равно, то значение @auto_identity_range игнорируется. Дополнительные сведения см. в статье Репликация столбцов идентификаторов.
[ @delete_tracking = ] N'delete_tracking'
Указывает, являются ли удаления реплицируемыми. @delete_tracking — nvarchar(5) с значением по умолчаниюtrue
. false
указывает, что удаления не реплицируются и true
указывают, что удаления реплицируются, что является обычным поведением репликации слиянием. Если задано 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.
Внимание
Включение этой оптимизации памяти может снизить производительность агент слияния во время синхронизации. Этот параметр должен использоваться только при репликации столбцов, содержащих мегабайты данных.
Примечание.
Некоторые функции репликации слиянием, такие как логические записи, по-прежнему могут препятствовать использованию оптимизации потока при репликации двоичных больших объектов даже с заданным значением @stream_blob_columnstrue
.
Значения кода возврата
0
(успешно) или 1
(сбой).
Замечания
sp_addmergearticle
используется в репликации слиянием.
При публикации объектов их определения копируются на подписчики. Если вы публикуете объект базы данных, который зависит от одного или нескольких других объектов, необходимо опубликовать все объекты, на которые ссылается ссылка. Например, при публикации представления, зависящего от таблицы, необходимо также опубликовать и таблицу.
Если указать значение 3
для @partition_options:
В этой статье может быть только одна подписка для каждой секции данных. Если создается вторая подписка, в которой условие фильтрации сводится к той же секции, что и в существующей подписке, то существующая подписка удаляется.
Метаданные очищаются всякий раз, когда агент слияния запускается, а секционированные моментальные снимки истекают быстрее. При использовании этого параметра следует разрешить запрошенный подписчиком секционированный снимок. Дополнительные сведения см. в статье Создание моментального снимка для публикации слиянием с параметризованными фильтрами.
Если вы добавляете статью со статическим горизонтальным фильтром, используя @subset_filterclause, в существующую публикацию с статьями с параметризованными фильтрами, подписки должны быть повторно инициализированы.
При указании @processing_order рекомендуется оставить пробелы между значениями порядка статей, что упрощает настройку новых значений в будущем. Например, если у вас есть три статьи, Article1
и , задайте для @processing_order 10
значение , 20
а не , 2
а 30
не 1
, и 3
.Article3
Article2
Дополнительные сведения см. в разделе Указание свойств репликации слиянием.
Таблица параметров схемы по умолчанию
В этой таблице описывается значение по умолчанию, которое задает хранимая процедура, если для @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, используется table
0x30034FF1
параметр схемы по умолчанию.
Допустимая таблица параметров схемы
В следующей таблице описаны допустимые значения , @schema_option в зависимости от типа статьи.
Тип статьи | Значения параметра схемы |
---|---|
func schema only |
0x01 и 0x2000 . |
indexed view schema only |
0x01 , 0x040 , , 0x2000 0x0100 0x40000 0x1000000 , и0x200000 |
proc schema only |
0x01 и 0x2000 . |
table |
Все параметры. |
view schema only |
0x01 , 0x040 , , 0x2000 0x0100 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 .