sp_changemergearticle (Transact-SQL)
Область применения: SQL Server
Изменяет свойства статьи публикации слиянием. Эта хранимая процедура выполняется на издателе в базе данных публикации.
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_changemergearticle
[ @publication = ] N'publication'
, [ @article = ] N'article'
[ , [ @property = ] N'property' ]
[ , [ @value = ] N'value' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ ; ]
Аргументы
[ @publication = ] N'publication'
Имя публикации, в которой существует статья. @publication — sysname без значения по умолчанию.
[ @article = ] N'article'
Имя статьи для изменения. @article — sysname без значения по умолчанию.
[ @property = ] N'property'
Свойство, которое нужно изменить для данной статьи и публикации. @property является sysname и может быть одним из значений, перечисленных в следующей таблице.
[ @value = ] N'value'
Новое значение заданного свойства. @value является nvarchar(2000) и может быть одним из значений, перечисленных в следующей таблице.
Эта таблица описывает свойства статей и значения этих свойств.
Свойство | Значения | Description |
---|---|---|
allow_interactive_resolver |
true |
Разрешает использование для статьи интерактивного арбитра конфликтов. |
false |
Запрещает использование для статьи интерактивного сопоставителя. | |
article_resolver |
Пользовательский сопоставитель для статьи. Применяется только к статье таблицы. | |
check_permissions (растровое изображение) |
0x00 |
Разрешения на уровне таблицы не проверяются. |
0x10 |
Разрешения уровня таблицы проверяются на издателе, прежде чем к издателю применяются выполненные на подписчике инструкции INSERT. | |
0x20 |
Разрешения уровня таблицы проверяются на издателе, прежде чем к издателю применяются выполненные на подписчике инструкции UPDATE. | |
0x40 |
Разрешения уровня таблицы проверяются на издателе, прежде чем к издателю применяются выполненные на подписчике инструкции DELETE. | |
column_tracking |
true |
Включает трассировку уровня столбца. Применяется только к статье таблицы. Примечание. Отслеживание уровня столбцов нельзя использовать при публикации таблиц с более чем 246 столбцами. |
false |
Выключает трассировку уровня столбца и оставляет обнаружение конфликтов уровня строки. Применяется только к статье таблицы. | |
compensate_for_errors |
true |
Выполняется компенсация при возникновении ошибок синхронизации. Дополнительные сведения см. в sp_addmergearticle. |
false |
Компенсирующие действия не выполняются, что является поведением по умолчанию. Дополнительные сведения см. в sp_addmergearticle. Важно. Хотя данные в затронутых строках могут оказаться неконвергентными, как только вы будете устранять любые ошибки, изменения могут применяться и конвергентировать данные. Если исходная таблица для статьи уже опубликована в другой публикации, значение compensate_for_errors должно быть одинаковым для обеих статей. |
|
creation_script |
Путь и имя необязательного скрипта схем статей, используемого для создания статьи в базе данных подписки. | |
delete_tracking |
true |
Выполняется репликация инструкций DELETE, что является значением по умолчанию. |
false |
Инструкции DELETE не реплицируются. Важно: установка delete_tracking результатов false неконвергенции, а удаленные строки должны быть удалены вручную. |
|
description |
Описание статьи. | |
destination_owner |
Имя владельца объекта в базе данных подписки, если не dbo. | |
identity_range |
bigint , указывающий размер диапазона, используемый при назначении новых значений удостоверений, если в статье задано identityrangemanagementoption auto значение или auto_identity_range задано значение true . Применяется только к статье таблицы. Дополнительные сведения см. в разделе "Репликация слиянием" столбцов реплицируемых удостоверений. |
|
identityrangemanagementoption |
manual |
Запрещает автоматическое управление диапазонами идентификаторов. Помечает столбцы идентификаторов как NOT FOR REPLICATION, чтобы разрешить ручное управление диапазонами идентификаторов. Дополнительные сведения см. в статье Репликация столбцов идентификаторов. |
none |
Запрещает какое бы то ни было управление диапазонами идентификаторов. | |
logical_record_level_conflict_detection |
true |
Обнаружение конфликтов производится при внесении изменений в любое место логической записи. Требуется, чтобы logical_record_level_conflict_resolution для этого задано true значение . |
false |
Обнаружение конфликтов по умолчанию используется в соответствии с заданным параметром column_tracking . |
|
logical_record_level_conflict_resolution |
true |
Выигравшая логическая запись целиком перезаписывает проигравшую. |
false |
Выигрышные строки не ограничиваются логическими записями. | |
partition_options |
0 |
Фильтрация для статьи является статической или не дает уникального подмножества данных для каждой секции, то есть "перекрывающейся" секции. |
1 |
Разделы перекрываются, и обновления DML, сделанные на подписчике, не могут изменить секцию, к которой принадлежит строка. | |
2 |
Фильтрация для статьи дает неперекрывающиеся секции, но несколько подписчиков могут получить одну и ту же секцию. | |
3 |
Фильтрация для статьи дает неперекрывающиеся секции, уникальные для каждой из подписок. Примечание. Если указать значение 3 для partition_options , в этой статье может быть только одна подписка для каждой секции данных. Если создается вторая подписка, в которой критерий фильтрации новой подписки разрешается в ту же секцию, что и существующая подписка, удаляется существующая подписка. |
|
pre_creation_command |
none |
Если таблица на подписчике уже существует, не выполняется никаких действий. |
delete |
Выполняет удаление, используя предложение WHERE, указанное в фильтре подмножества. | |
drop |
Удаляет таблицу перед ее повторным созданием. | |
truncate |
Усекает целевую таблицу. | |
processing_order |
Int , указывающий порядок обработки статей в публикации слиянием. | |
pub_identity_range |
bigint , указывающий размер диапазона, выделенный подписчику с подпиской сервера, если в статье identityrangemanagementoption задано auto значение или auto_identity_range задано true значение . Этот диапазон идентификаторов резервируется переиздающему подписчику для выделения собственным подписчикам. Применяется только к статье таблицы. Дополнительные сведения см. в разделе "Репликация слиянием" столбцов реплицируемых удостоверений. |
|
published_in_tran_pub |
true |
Статья также опубликована в публикации транзакций. |
false |
Статья также не публикуется в публикации транзакций. | |
resolver_info |
Используется для указания дополнительных сведений, необходимых пользовательскому сопоставителю. Для некоторых средств разрешения Майкрософт требуется столбец, предоставленный в качестве входных данных для сопоставителя. resolver_info имеет значение nvarchar(255) с значением по умолчанию NULL . Дополнительные сведения см. в разделе "Расширенный конфликт репликации слиянием" — com-разрешения. |
|
schema_option (растровое изображение) |
Дополнительные сведения см. в разделе с примечаниями. | |
0x00 |
Отключает скрипты агент моментальных снимков и использует приведенный в creation_script ней скрипт. |
|
0x01 |
Создает скрипт создания объекта (CREATE TABLE, CREATE PROCEDURE и т. д.). | |
0x10 |
Создает соответствующий кластеризованный индекс. | |
0x20 |
Преобразует определяемые пользователем типы данных в базовые типы данных подписчика. Этот параметр нельзя использовать при наличии ограничения CHECK или DEFAULT для определяемого пользователем типа (UDT), если столбец определяемого пользователем типа является частью первичного ключа или если вычисляемый столбец ссылается на столбец UDT. | |
0x40 |
Создает соответствующие некластеризованные индексы. | |
0x80 |
Включает объявленную ссылочную целостность по первичным ключам. | |
0x100 |
Реплицирует пользовательские триггеры для статьи таблицы, если заданы. | |
0x200 |
Реплицирует ограничения FOREIGN KEY. Если указанная таблица не является частью публикации, все ограничения FOREIGN KEY для опубликованной таблицы не реплицируются. | |
0x400 |
Реплицирует ограничения CHECK. | |
0x800 |
Реплицирует значения по умолчанию. | |
0x1000 |
Реплицирует параметры сортировки на уровне столбцов. | |
0x2000 |
Реплицирует расширенные свойства, связанные с исходным объектом опубликованной статьи. | |
0x4000 |
Реплицирует уникальные ключи для статьи таблицы, если они определены. | |
0x8000 |
Создает инструкции ALTER TABLE при включении в сценарий ограничений. | |
0x10000 |
Реплицирует ограничения CHECK как NOT FOR REPLICATION, чтобы ограничения не применялись во время синхронизации. | |
0x20000 |
Реплицирует ограничения FOREIGN KEY как NOT FOR REPLICATION, чтобы ограничения не применялись во время синхронизации. | |
0x40000 |
Реплицирует файловые группы, связанные с секционированной таблицей или индексом. | |
0x80000 |
Реплицирует схему секционирования для секционированной таблицы. | |
0x100000 |
Реплицирует схему секционирования для секционированного индекса. | |
0x200000 |
Реплицирует статистику таблицы. | |
0x400000 |
Реплицирует привязки к значениям по умолчанию. | |
0x800000 |
Реплицирует привязки к правилам. | |
0x1000000 |
Реплицирует полнотекстовый индекс. | |
0x2000000 |
Коллекции схем XML, привязанные к xml-столбцам , не реплицируются. | |
0x4000000 |
Реплицирует индексы в xml-столбцах . | |
0x8000000 |
Создает все схемы, отсутствующие в настоящий момент на подписчике. | |
0x10000000 |
Преобразует xml-столбцы в ntext на подписчике. | |
0x20000000 |
Преобразует типы данных больших объектов (nvarchar(max), varchar(max)и varbinary(max)), которые были введены в SQL Server 2005 (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 |
Система автоматически создает допустимый параметр схемы для статьи. | |
status |
active |
Скрипт начальной обработки для публикации таблицы запущен. |
unsynced |
Скрипт начальной обработки для публикации таблицы будет запущен при следующем запуске агента моментальных снимков. | |
stream_blob_columns |
true |
Используется оптимизация потока данных при репликации столбцов больших двоичных объектов. Однако при этом некоторые функции репликации слиянием, например логические записи, могут помешать использованию оптимизации потока. stream_blob_columns имеет значение true, если параметр FILESTREAM включен. Это позволяет оптимально выполнять репликацию данных FILESTREAM и уменьшить использование памяти. Чтобы принудительно использовать потоковую передачу BLOB-объектов, задайте stream_blob_columns значение false.Важно. Включение этой оптимизации памяти может повредить производительность агент слияния во время синхронизации. Этот параметр должен использоваться только при репликации столбцов, содержащих мегабайты данных. |
false |
Оптимизация не используется при репликации столбцов больших двоичных объектов. | |
subscriber_upload_options |
0 |
Нет ограничений для обновлений, выполняемых на подписчике с помощью клиентской подписки. Все изменения выгружаются на издатель. Изменение этого свойства может потребовать повторной инициализации существующих подписчиков. |
1 |
Изменения разрешены на подписчике с клиентской подпиской, но они не передаются издателю. | |
2 |
Изменения не допускаются на подписчике с клиентской подпиской. | |
subset_filterclause |
Предложение WHERE задает горизонтальную фильтрацию. Применяется только к статье таблицы. Важно. По соображениям производительности рекомендуется не применять функции к именам столбцов в предложениях фильтра строк параметризованной строки, например LEFT([MyColumn]) = SUSER_SNAME() . Если вы используете HOST_NAME в предложении фильтра и переопределяете значение HOST_NAME , может потребоваться преобразовать типы данных с помощью CONVERT. Дополнительные сведения о рекомендациях по этому делу см. в разделе "Переопределение значения HOST_NAME() в параметризованных фильтрах — параметризованные фильтры строк. |
|
threshold |
Процентное значение, используемое для подписчиков под управлением SQL Server Compact или более ранних версий SQL Server. threshold определяет, когда агент слияния назначает новый диапазон удостоверений. Если превышен указанный процент использованных значений, агент слияния выделяет новый диапазон идентификаторов. Используется, если identityrangemanagementoption auto задано значение или auto_identity_range имеет true значение . Применяется только к статье таблицы. Дополнительные сведения см. в разделе "Репликация слиянием" столбцов реплицируемых удостоверений. |
|
verify_resolver_signature |
1 |
Цифровая подпись пользовательского сопоставителя проверяется, является ли она из доверенного источника. |
0 |
Цифровая подпись пользовательского сопоставителя не проверяется, является ли она из доверенного источника. | |
NULL (по умолчанию) |
Возвращает список поддерживаемых значений для @property. |
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
Подтверждает, что действие, выполненное этой хранимой процедурой, может сделать недействительным существующий моментальный снимок. @force_invalidate_snapshot бит с значением по умолчанию0
.
0
указывает, что изменения в статье слияния не вызывают недопустимого моментального снимка. Если хранимая процедура определяет, что изменение требует создания нового моментального снимка, возникает ошибка и изменения не выполняются.1
означает, что изменения в статье слиянием могут привести к недопустимому моментальному снимку, и если существуют существующие подписки, для которых требуется новый моментальный снимок, дает разрешение для того, чтобы существующий моментальный снимок был помечен как устаревший и созданный новый моментальный снимок.
См. раздел "Примечания " для свойств, которые при изменении требуют создания нового моментального снимка.
[ @force_reinit_subscription = ] force_reinit_subscription
Подтверждает, что действие, выполняемое данной хранимой процедурой, может сделать необходимой повторную инициализацию существующих подписок. @force_reinit_subscription бит с значением по умолчанию0
.
0
указывает, что изменения в статье слияния не приводят к повторной инициализации подписки. Если хранимая процедура определяет, что изменения потребуют повторной инициализации подписок, возникает ошибка, и изменения не выполняются.1
означает, что изменения в статье слиянием приводят к повторной инициализации существующих подписок и предоставляют разрешение на повторную инициализацию подписки.
В разделе "Примечания " описаны свойства, которые при изменении требуют повторной инициализации всех существующих подписок.
Значения кода возврата
0
(успешно) или 1
(сбой).
Замечания
sp_changemergearticle
используется в репликации слиянием.
Так как sp_changemergearticle
используется для изменения свойств статьи, которые изначально были указаны с помощью sp_addmergearticle, см . sp_addmergearticle дополнительные сведения об этих свойствах.
Для изменения следующих свойств требуется создать новый моментальный снимок, и необходимо указать значение 1
параметра @force_invalidate_snapshot :
check_permissions
column_tracking
destination_owner
pre_creation_command
schema_options
subset_filterclause
Для изменения следующих свойств требуется повторно инициализировать существующие подписки, и необходимо указать значение 1
параметра @force_reinit_subscription :
check_permissions
column_tracking
destination_owner
pre_creation_command
identityrangemanagementoption
subscriber_upload_options
subset_filterclause
creation_script
schema_option
logical_record_level_conflict_detection
logical_record_level_conflict_resolution
При указании значения для метаданных 3
partition_options
удаляются всякий раз, когда выполняется агент слияния, а секционированные моментальные снимки истекают быстрее. При использовании этого параметра следует разрешить запрошенный подписчиком секционированный снимок. Дополнительные сведения см. в статье Создание моментального снимка для публикации слиянием с параметризованными фильтрами.
При задании column_tracking
свойства, если таблица уже опубликована в других публикациях слиянием, отслеживание столбцов должно совпадать со значением, используемым существующими статьями на основе этой таблицы. Этот параметр применим только для статей таблиц.
Если несколько публикаций публикуют статьи на основе одной базовой таблицы, изменение delete_tracking
свойства или compensate_for_errors
свойства для одной статьи приводит к тому же изменению других статей, основанных на одной таблице.
Если учетная запись издателя, используемая процессом слияния, не имеет правильных разрешений на таблицу, недопустимые изменения регистрируются как конфликты.
При изменении значения schema_option
система не выполняет побитовое обновление. Это означает, что при настройке schema_option
использования sp_changemergearticle
существующие битовые параметры могут быть отключены. Чтобы сохранить существующие параметры, следует выполнить и ( Побитовая и) между заданным значением и текущим значением schema_option
, которое можно определить, выполнив sp_helpmergearticle.
Внимание
Когда вы много (возможно, сотни) статей в публикации и вы выполняете sp_changemergearticle
для одной из статей, это может занять много времени, чтобы завершить выполнение.
Допустимая таблица параметров схемы
В следующей таблице описаны допустимые 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 @article AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @article = N'SalesOrderHeader';
-- Enable column-level conflict tracking.
-- Changing this property requires that existing subscriptions
-- be reinitialized and that a new snapshot be generated.
USE [AdventureWorks2022]
EXEC sp_changemergearticle
@publication = @publication,
@article = @article,
@property = N'column_tracking',
@value = N'true',
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
GO
Разрешения
Могут выполняться только члены предопределенных ролей сервера sysadmin или db_owner предопределенных ролей базы данных.sp_changemergearticle