sp_addarticle (Transact-SQL)

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

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

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

Синтаксис

  
sp_addarticle [ @publication = ] 'publication'   
        , [ @article = ] 'article'   
    [ , [ @source_table = ] 'source_table' ]  
    [ , [ @destination_table = ] 'destination_table' ]   
    [ , [ @vertical_partition = ] 'vertical_partition' ]   
    [ , [ @type = ] 'type' ]   
    [ , [ @filter = ] 'filter' ]   
    [ , [ @sync_object= ] 'sync_object' ]   
        [ , [ @ins_cmd = ] 'ins_cmd' ]   
    [ , [ @del_cmd = ] 'del_cmd' ]   
        [ , [ @upd_cmd = ] 'upd_cmd' ]   
    [ , [ @creation_script = ] 'creation_script' ]   
    [ , [ @description = ] 'description' ]   
    [ , [ @pre_creation_cmd = ] 'pre_creation_cmd' ]   
    [ , [ @filter_clause = ] 'filter_clause' ]   
    [ , [ @schema_option = ] schema_option ]   
    [ , [ @destination_owner = ] 'destination_owner' ]   
    [ , [ @status = ] status ]   
    [ , [ @source_owner = ] 'source_owner' ]   
    [ , [ @sync_object_owner = ] 'sync_object_owner' ]   
    [ , [ @filter_owner = ] 'filter_owner' ]   
    [ , [ @source_object = ] 'source_object' ]   
    [ , [ @artid = ] article_ID  OUTPUT ]   
    [ , [ @auto_identity_range = ] 'auto_identity_range' ]   
    [ , [ @pub_identity_range = ] pub_identity_range ]   
    [ , [ @identity_range = ] identity_range ]   
    [ , [ @threshold = ] threshold ]   
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]  
    [ , [ @use_default_datatypes = ] use_default_datatypes  
    [ , [ @identityrangemanagementoption = ] identityrangemanagementoption ]  
    [ , [ @publisher = ] 'publisher' ]  
    [ , [ @fire_triggers_on_snapshot = ] 'fire_triggers_on_snapshot' ]   

Аргументы

[ @publication = ] 'publication' Имя публикации, содержащей статью. В базе данных это имя должно быть уникальным. Параметр publication имеет значение sysname без значения по умолчанию.

[ @article = ] 'article' Название статьи. Имя должно быть уникальным в пределах публикации. article имеет значение sysname, без значения по умолчанию.

[ @source_table = ] 'source_table' Этот параметр не рекомендуется; вместо этого используйте source_object .

Этот параметр не поддерживается для издателей Oracle.

[ @destination_table = ] 'destination_table' Имя целевой таблицы (подписки), если оно отличается от source_tableили хранимой процедуры. destination_table имеет значение sysname со значением по умолчанию NULL, что означает, что source_table равно destination_table*.*

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

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

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

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

Значение Описание
aggregate schema only Только агрегатная функция со схемой.
func schema only Только функция со схемой.
indexed view logbased Статья индексированного представления, создаваемая на основе журнала. Не поддерживается для издателей Oracle. Для этого типа статьи нет необходимости отдельно публиковать базовую таблицу.
indexed view logbased manualboth Создаваемая на основе журнала статья индексированного представления с фильтрацией вручную и представлением вручную. Для этого параметра необходимо указать параметры sync_object и фильтра . Для этого типа статьи нет необходимости отдельно публиковать базовую таблицу. Не поддерживается для издателей Oracle.
indexed view logbased manualfilter Создаваемая на основе журнала статья индексированного представления с фильтрацией вручную. Для этого параметра необходимо указать параметры sync_object и фильтра . Для этого типа статьи нет необходимости отдельно публиковать базовую таблицу. Не поддерживается для издателей Oracle.
indexed view logbased manualview Создаваемая на основе журнала статья индексированного представления с представлением вручную. Для этого параметра необходимо указать параметр sync_object . Для этого типа статьи нет необходимости отдельно публиковать базовую таблицу. Не поддерживается для издателей Oracle.
indexed view schema only Только индексированное представление со схемой. Для этого типа статьи базовая таблица должна быть также опубликована.
logbased (по умолчанию) Статья на основе журнала.
logbased manualboth Создаваемая на основе журнала статья с фильтрацией вручную и представлением вручную. Для этого параметра необходимо указать параметры sync_object и фильтра . Не поддерживается для издателей Oracle.
logbased manualfilter Создаваемая на основе журнала статья с фильтрацией вручную. Для этого параметра необходимо указать параметры sync_object и фильтра . Не поддерживается для издателей Oracle.
logbased manualview Создаваемая на основе журнала статья с представлением вручную. Для этого параметра необходимо указать параметр sync_object . Не поддерживается для издателей Oracle.
proc exec Реплицирует выполнение хранимой процедуры всем подписчикам на статью. Не поддерживается для издателей Oracle. Рекомендуется использовать параметр serializable proc exec вместо proc exec. Дополнительные сведения см. в разделе "Типы статей о выполнении хранимых процедур" статьи Публикация выполнения хранимой процедуры в репликации транзакций. Недоступно, когда включена система отслеживания измененных данных.
proc schema only Процедура только со схемой. Не поддерживается для издателей Oracle.
serializable proc exec Реплицирует выполнение хранимой процедуры только в том случае, если она выполняется в контексте сериализуемой транзакции. Не поддерживается для издателей Oracle.

Чтобы осуществить репликацию выполнения процедуры, процедура должна быть выполнена внутри явной транзакции.
view schema only Только представление со схемой. Не поддерживается для издателей Oracle. При использовании этого параметра необходимо также публиковать базовую таблицу.

[ @filter = ] 'filter' Хранимая процедура (созданная с помощью FOR REPLICATION), используемая для фильтрации таблицы по горизонтали. параметр filter имеет значение nvarchar(386) с значением по умолчанию NULL. sp_articleview и sp_articlefilter необходимо выполнить вручную, чтобы создать хранимую процедуру представления и фильтрации. Если этот аргумент не равен NULL, процедура фильтра не создается (предполагается, что хранимая процедура создана вручную).

[ @sync_object = ] 'sync_object' Имя таблицы или представления, используемых для создания файла данных, используемого для представления моментального снимка для этой статьи. sync_object имеет значение nvarchar(386) со значением по умолчанию NULL. Если значение РАВНО NULL, sp_articleview вызывается для автоматического создания представления, используемого для создания выходного файла. Это происходит после добавления столбцов с sp_articlecolumn. Если этот аргумент не равен NULL, представление не создается (предполагается, что оно создано вручную).

[ @ins_cmd = ] 'ins_cmd' Тип команды репликации, используемый при репликации вставок для этой статьи. ins_cmd имеет значение nvarchar(255) и может иметь одно из следующих значений.

Значение Описание
NONE Не выполняется никаких действий.
CALL sp_MSins_
table (по умолчанию)

-или-

CALL custom_stored_procedure_name
Вызывается хранимая процедура, выполняемая на подписчике. Чтобы использовать этот метод репликации, используйте schema_option , чтобы указать автоматическое создание хранимой процедуры или создать указанную хранимую процедуру в целевой базе данных каждого подписчика статьи. custom_stored_procedure — это имя созданной пользователем хранимой процедуры. sp_MSins_table содержит имя целевой таблицы вместо _table части параметра. При указании destination_owner она добавляется к имени целевой таблицы. Например, для таблицы ProductCategory , принадлежащей схеме Production на подписчике, параметр будет иметь значение CALL sp_MSins_ProductionProductCategory. В статье о топологии одноранговой репликации _table добавляется значение GUID. Указание custom_stored_procedure не поддерживается для обновления подписчиков.
SQL или NULL Реплицирует инструкцию INSERT. Инструкции INSERT предоставляются значения всех столбцов, опубликованных в статье. Эта команда реплицируется при операции вставки:

INSERT INTO <table name> VALUES (c1value, c2value, c3value, ..., cnvalue)

Дополнительные сведения см. в статье Указание способа распространения изменений для статей транзакций.

[ @del_cmd = ] 'del_cmd' Тип команды репликации, используемый при репликации удаления для этой статьи. del_cmd имеет значение nvarchar(255) и может иметь одно из следующих значений.

Значение Описание
NONE Не выполняется никаких действий.
CALLsp_MSdel_
table (по умолчанию)

-или-

CALL custom_stored_procedure_name
Вызывается хранимая процедура, выполняемая на подписчике. Чтобы использовать этот метод репликации, используйте schema_option , чтобы указать автоматическое создание хранимой процедуры или создать указанную хранимую процедуру в целевой базе данных каждого подписчика статьи. custom_stored_procedure — это имя созданной пользователем хранимой процедуры. sp_MSdel_table содержит имя целевой таблицы вместо _table части параметра. При указании destination_owner она добавляется к имени целевой таблицы. Например, для таблицы ProductCategory , принадлежащей схеме Production на подписчике, параметр будет иметь значение CALL sp_MSdel_ProductionProductCategory. В статье о топологии одноранговой репликации _table добавляется значение GUID. Указание custom_stored_procedure не поддерживается для обновления подписчиков.
XCALL sp_MSdel_
Таблице

-или-

XCALL custom_stored_procedure_name
Вызывается хранимая процедура, принимающая параметры в стиле XCALL. Чтобы использовать этот метод репликации, используйте schema_option , чтобы указать автоматическое создание хранимой процедуры или создать указанную хранимую процедуру в целевой базе данных каждого подписчика статьи. Обновление подписчиков с помощью пользовательской хранимой процедуры не поддерживается.
SQL или NULL Реплицирует инструкцию DELETE. Инструкции DELETE предоставляются значения всех первичных ключевых столбцов. Эта команда реплицируется при операции удаления:

DELETE FROM <table name> WHERE pkc1 = pkc1value AND pkc2 = pkc2value AND pkcn = pkcnvalue

Дополнительные сведения см. в статье Указание способа распространения изменений для статей транзакций.

[ @upd_cmd = ] 'upd_cmd' Тип команды репликации, используемый при репликации обновлений для этой статьи. upd_cmd имеет значение nvarchar(255) и может иметь одно из следующих значений.

Значение Описание
NONE Не выполняется никаких действий.
CALL sp_MSupd_
Таблице

-или-

CALL custom_stored_procedure_name
Вызывается хранимая процедура, выполняемая на подписчике. Чтобы использовать этот метод репликации, используйте schema_option , чтобы указать автоматическое создание хранимой процедуры или создать указанную хранимую процедуру в целевой базе данных каждого подписчика статьи.
MCALL sp_MSupd_
Таблице

-или-

MCALL custom_stored_procedure_name
Вызывается хранимая процедура, принимающая параметры в стиле MCALL. Чтобы использовать этот метод репликации, используйте schema_option , чтобы указать автоматическое создание хранимой процедуры или создать указанную хранимую процедуру в целевой базе данных каждого подписчика статьи. custom_stored_procedure — это имя созданной пользователем хранимой процедуры. sp_MSupd_table содержит имя целевой таблицы вместо _table части параметра. При указании destination_owner она добавляется к имени целевой таблицы. Например, для таблицы ProductCategory , принадлежащей схеме Production на подписчике, параметр будет иметь значение MCALL sp_MSupd_ProductionProductCategory. В статье о топологии одноранговой репликации _table добавляется значение GUID. Обновление подписчиков с помощью пользовательской хранимой процедуры не поддерживается.
SCALL sp_MSupd_
table (по умолчанию)

-или-

SCALL custom_stored_procedure_name
Вызывается хранимая процедура, принимающая параметры в стиле SCALL. Чтобы использовать этот метод репликации, используйте schema_option , чтобы указать автоматическое создание хранимой процедуры или создать указанную хранимую процедуру в целевой базе данных каждого подписчика статьи. custom_stored_procedure — это имя созданной пользователем хранимой процедуры. sp_MSupd_table содержит имя целевой таблицы вместо _table части параметра. При указании destination_owner она добавляется к имени целевой таблицы. Например, для таблицы ProductCategory , принадлежащей схеме Production на подписчике, параметр будет иметь значение SCALL sp_MSupd_ProductionProductCategory. В статье о топологии одноранговой репликации _table добавляется значение GUID. Обновление подписчиков с помощью пользовательской хранимой процедуры не поддерживается.
XCALL sp_MSupd_
Таблице

-или-

XCALL custom_stored_procedure_name
Вызывается хранимая процедура, принимающая параметры в стиле XCALL. Чтобы использовать этот метод репликации, используйте schema_option , чтобы указать автоматическое создание хранимой процедуры или создать указанную хранимую процедуру в целевой базе данных каждого подписчика статьи. Обновление подписчиков с помощью пользовательской хранимой процедуры не поддерживается.
SQL или NULL Реплицирует инструкцию UPDATE. Инструкции UPDATE предоставляются значения всех обычных столбцов и значения всех первичных ключевых столбцов. Следующая команда реплицируется при операции обновления:

UPDATE <table name> SET c1 = c1value, SET c2 = c2value, SET cn = cnvalue WHERE pkc1 = pkc1value AND pkc2 = pkc2value AND pkcn = pkcnvalue

Примечание

Синтаксисы CALL, MCALL, SCALL и XCALL отличаются объемом данных, передаваемых подписчику. При использовании синтаксиса CALL подписчику передаются все значения всех вставленных и удаленных столбцов. При использовании синтаксиса SCALL передаются значения только измененных столбцов. При использовании синтаксиса XCALL передаются значения всех столбцов, измененных или неизмененных, включая предыдущие значения столбцов. Дополнительные сведения см. в статье Указание способа распространения изменений для статей транзакций.

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

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

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

Значение Описание
Нет Не использует команду.
delete Перед применением моментального снимка данные из целевой таблицы удаляются. Если для статьи выполнена горизонтальная фильтрация, удаляются данные только в тех столбцах, которые указаны в предложении-фильтре. Если определен горизонтальный фильтр, издатели Oracle не поддерживают это значение.
drop (по умолчанию) Удаляет целевую таблицу полностью.
truncate Усекает целевую таблицу. Подписчики ODBC и OLE DB не поддерживают это значение.

[ @filter_clause = ] 'filter_clause' Предложение ограничения (WHERE), определяющее горизонтальный фильтр. При вводе предложения ограничения опустите ключевое слово WHERE. filter_clause имеет значение ntext и значение по умолчанию — NULL. Дополнительные сведения см. в статье Фильтрация опубликованных данных.

[ @schema_option = ] schema_option Битовая маска параметра создания схемы для данной статьи. schema_option имеет значение binary(8) и может быть | (Побитовое ИЛИ) произведение одного или нескольких из этих значений:

Примечание

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

Значение Описание
0x00 Отключает скрипты агент моментальных снимков и использует creation_script.
0x01 Создает скрипт создания объекта (CREATE TABLE, CREATE PROCEDURE и т. д.). Это значение по умолчанию для статей хранимых процедур.
0x02 Создает хранимые процедуры, которые распространяют изменения в статье, если они заданы.
0x04 Столбцы идентификаторов вносятся в сценарий с помощью свойства IDENTITY.
0x08 Репликация столбцов метки времени . Если значение не задано, столбцы меток времени реплицируются как двоичные.
0x10 Создает соответствующий кластеризованный индекс. Даже если этот параметр не установлен, индексы, связанные с первичными ключами и ограничениями уникальности, создаются при условии, что они уже определены в опубликованной таблице.
0x20 Преобразует определяемые пользователем типы данных (UDT) в базовые типы данных подписчика. Этот параметр не может использоваться, если на столбец UDT наложено ограничение CHECK или DEFAULT, если столбец UDT является частью первичного ключа или если вычисляемый столбец ссылается на столбец UDT. Не поддерживается для издателей Oracle.
0x40 Создает соответствующие некластеризованные индексы. Даже если этот параметр не установлен, индексы, связанные с первичными ключами и ограничениями уникальности, создаются при условии, что они уже определены в опубликованной таблице.
0x80 Реплицирует ограничения первичного ключа. Все индексы, связанные с ограничением, также реплицируются, даже если параметры 0x10 и 0x40 не включены.
0x100 Реплицирует пользовательские триггеры для статьи таблицы, если заданы. Не поддерживается для издателей Oracle.
0x200 Реплицирует ограничения внешнего ключа. Если таблица, указанная в ссылке, не является частью публикации, все ограничения внешнего ключа по опубликованной таблице не реплицируются. Не поддерживается для издателей Oracle.
0x400 Реплицирует проверочные ограничения. Не поддерживается для издателей Oracle.
0x800 Реплицирует значения по умолчанию. Не поддерживается для издателей Oracle.
0x1000 Реплицирует параметры сортировки на уровне столбцов.

Примечание: Этот параметр следует задать для издателей Oracle, чтобы включить сравнения с учетом регистра.
0x2000 Реплицирует расширенные свойства, связанные с исходным объектом опубликованной статьи. Не поддерживается для издателей Oracle.
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 Проводит репликацию параметра сжатия для данных и индексов. Дополнительные сведения см. в разделе Data Compression.
0x800000000 Задайте этот параметр для сохранения данных атрибута FILESTREAM в его файловой группе на подписчике. Если этот параметр не задан, данные атрибута FILESTREAM сохраняются в файловой группе по умолчанию. Репликация не создает файловые группы, поэтому, если этот параметр задан, необходимо создать файловую группу до применения моментального снимка на подписчике. Дополнительные сведения о создании объектов перед применением моментального снимка см. в разделах Выполнение скриптов до и после применения моментального снимка.

См. 0x100000000 связанных параметров.
0x1000000000 Преобразует определяемые пользователем типы среды CLR, размер которых превышает 8000 байт, в varbinary(max), чтобы столбцы типа UDT можно было реплицировать на подписчики, работающие SQL Server 2005 (9.x).
0x2000000000 Преобразует тип данных hierarchyid в тип данных varbinary(max), чтобы столбцы типа hierarchyid можно было реплицировать на подписчиков, работающих SQL Server 2005 (9.x). Дополнительные сведения об использовании столбцов hierarchyid в реплицированных таблицах см. в разделе hierarchyid (Transact-SQL).
0x4000000000 Проводит репликацию всех фильтруемых индексов для таблицы. Дополнительные сведения о фильтруемых индексах см. в разделе Создание отфильтрованных индексов.
0x8000000000 Преобразует типы данных geography и geometry в тип varbinary(max), чтобы столбцы этих типов можно было реплицировать на подписчики, работающие SQL Server 2005 (9.x).
0x10000000000 Реплицирует индексы для столбцов типа geography и geometry.
0x20000000000 Производит репликацию атрибута SPARSE для столбцов. Дополнительные сведения об этом атрибуте см. в разделе Использование разреженных столбцов.
0x40000000000 Включите скрипты агентом моментальных снимков для создания оптимизированной для памяти таблицы на подписчике.
0x80000000000 Преобразует кластеризованный индекс в некластеризованный индекс для статей, оптимизированных для памяти.
0x400000000000 Реплицирует все некластеризованные индексы columnstore в таблицах
0x800000000000 Реплицирует все некластеризованные индексы columnstore в таблицах.
NULL Репликация автоматически задает schema_option значение по умолчанию, значение которого зависит от других свойств статьи. Значения, которые будут выбраны на основе типа статьи и типа репликации, приведены в таблице «Параметры схемы по умолчанию» в разделе «Примечания».

По умолчанию для публикаций, не SQL Server, используется 0x050D3.

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

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

Условие Владелец целевого объекта
Публикация использует массовое копирование в собственном режиме для создания начального моментального снимка, который поддерживает только SQL Server подписчиков. Значение по умолчанию — source_owner.
Опубликовано на издателе, отличном от SQL Server. По умолчанию тот же, что и владелец целевой базы данных.
Публикация использует массовое копирование в символьном режиме для создания начального моментального снимка, который поддерживает подписчики, не SQL Server. Владелец не назначается.

Для поддержки подписчиков, отличных от SQL Server, destination_owner должно иметь значение NULL.

[ @status = ] status Указывает, активна ли статья, и дополнительные параметры распространения изменений. status имеет значение tinyint и может иметь значение | (Побитовое ИЛИ) произведение одного или нескольких из этих значений.

Значение Описание
1 Статья активна.
8 Включить имя столбца в инструкции INSERT.
16 (по умолчанию) Использовать параметризованные инструкции.
24 Включить имя столбца в инструкции INSERT и использовать параметризованные инструкции.
64 Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.

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

[ @source_owner = ] 'source_owner' Владелец исходного объекта. source_owner имеет значение sysname, значение по умолчанию — NULL. source_owner необходимо указать для издателей Oracle.

[ @sync_object_owner = ] 'sync_object_owner' Владелец представления, определяющего опубликованную статью. sync_object_owner имеет значение sysname, а значение по умолчанию — NULL.

[ @filter_owner = ] 'filter_owner' Владелец фильтра. filter_owner имеет значение sysname со значением по умолчанию NULL.

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

[ @artid = ] _article_ID_ OUTPUT Идентификатор новой статьи. article_ID имеет значение int с значением по умолчанию NULL и параметром OUTPUT.

[ @auto_identity_range = ] 'auto_identity_range' Включает и отключает автоматическую обработку диапазона удостоверений для публикации во время ее создания. auto_identity_range имеет значение nvarchar(5) и может иметь одно из следующих значений:

Значение Описание
true Включить автоматическую обработку диапазона идентификаторов.
false Отключить автоматическую обработку диапазона идентификаторов.
NULL (по умолчанию) Обработка диапазона удостоверений задается с помощью identityrangemanagementoption.

Примечание

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

[ @pub_identity_range = ] pub_identity_range Управляет размером диапазона на издателе, если в статье для параметра identityrangemanagementoption задано значение auto или auto_identity_range задано значение true. pub_identity_range имеет значение bigint со значением по умолчанию NULL. Не поддерживается для издателей Oracle.

[ @identity_range = ] identity_range Управляет размером диапазона на подписчике, если в статье для параметра identityrangemanagementoption задано значение auto или auto_identity_range задано значение true. identity_range имеет значение bigint со значением по умолчанию NULL. Используется, если auto_identity_range имеет значение true. Не поддерживается для издателей Oracle.

[ @threshold = ] thresholdПроцентное значение, определяющее, когда агент распространения назначает новый диапазон удостоверений. Если используется процент значений, указанных в пороговом значении, агент распространения создает новый диапазон идентификаторов. параметр threshold имеет значение bigint, значение по умолчанию — NULL. Используется, если параметр identityrangemanagementoption имеет значение auto или auto_identity_range имеет значение true. Не поддерживается для издателей Oracle.

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

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

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

[ @use_default_datatypes = ] use_default_datatypes Указывает, используются ли сопоставления типов данных столбцов по умолчанию при публикации статьи из издателя Oracle. use_default_datatypes — бит, значение по умолчанию — 1.

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

0 = определены настраиваемые сопоставления столбцов статьи, поэтому sp_articleview не вызывается sp_addarticle.

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

Примечание

Этот аргумент следует использовать только с издателями, отличными от издателей Oracle. Установка use_default_datatypes значения 0 для издателя SQL Server приводит к ошибке.

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

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

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

Дополнительные сведения см. в статье Репликация столбцов идентификаторов.

[ @publisher = ] 'publisher'Указывает издателя, отличного от SQL Server. publishersysname, значение по умолчанию — NULL.

Примечание

Publisher не следует использовать при добавлении статьи в SQL Server Publisher.

[ @fire_triggers_on_snapshot = ] 'fire_triggers_on_snapshot' Значение , если реплицированные пользовательские триггеры выполняются при применении начального моментального снимка. fire_triggers_on_snapshot имеет значение nvarchar(5) со значением по умолчанию FALSE. Значение true означает, что триггеры пользователя в реплицированной таблице выполняются при применении моментального снимка. Для репликации триггеров значение битовой маски schema_option должно включать значение 0x100.

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

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

Комментарии

sp_addarticle используется в репликации моментальных снимков или репликации транзакций.

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

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

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

  • Имя и владелец целевой таблицы должны соответствовать имени и владельцу исходной таблицы.

  • Статья не может быть отфильтрована горизонтально или вертикально.

  • Автоматическое управление диапазонами идентификаторов не поддерживается. Необходимо указать значение manual для identityrangemanagementoption.

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

  • Нельзя указать значение SQL для ins_cmd, upd_cmd и del_cmd.

Дополнительные сведения см. в разделе Peer-to-Peer Transactional Replication.

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

Если vertical_partition имеет значение true, sp_addarticle откладывает создание представления до вызова sp_articleview (после добавления последнего sp_articlecolumn ).

Если публикация позволяет обновлять подписки, а опубликованная таблица не содержит столбец uniqueidentifier , sp_addarticle автоматически добавляет столбец uniqueidentifier в таблицу.

При репликации на подписчик, который не является экземпляром SQL Server (разнородная репликация), для команд INSERT, UPDATE и DELETE поддерживаются только инструкции Transact-SQL.

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

Если задано значение @del_cmd = 'NONE' или @ins_cmd = 'NONE', распространение команд UPDATE также может быть затронуто тем, что они не отправляются при ограниченном обновлении. Ограниченное обновление — это вид инструкции UPDATE от издателя, которая реплицируется на подписчике как пара DELETE/INSERT.

Параметры схемы по умолчанию

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

Тип статьи Репликация транзакций репликация моментальных снимков;
aggregate schema only 0x01 0x01
func schema only 0x01 0x01
indexed view schema only 0x01 0x01
indexed view logbased 0x30F3 0x3071
indexed view logbase manualboth 0x30F3 0x3071
indexed view logbased manualfilter 0x30F3 0x3071
indexed view logbased manualview 0x30F3 0x3071
На основе журнала 0x30F3 0x3071
logbased manualfilter 0x30F3 0x3071
logbased manualview 0x30F3 0x3071
proc exec 0x01 0x01
proc schema only 0x01 0x01
serializable proc exec 0x01 0x01
view schema only 0x01 0x01

Примечание

Если публикация включена для обновления в очереди, schema_option значение 0x80 добавляется к значению по умолчанию, указанному в таблице. Schema_option по умолчанию для публикации, не SQL Server, — 0x050D3.

Допустимые параметры схемы

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

Тип статьи Репликация транзакций репликация моментальных снимков;
На основе журнала Все параметры Все параметры , кроме 0x02
logbased manualfilter Все параметры Все параметры , кроме 0x02
logbased manualview Все параметры Все параметры , кроме 0x02
indexed view logbased Все параметры Все параметры , кроме 0x02
indexed view logbased manualfilter Все параметры Все параметры , кроме 0x02
indexed view logbased manualview Все параметры Все параметры , кроме 0x02
indexed view logbase manualboth Все параметры Все параметры , кроме 0x02
proc exec 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 и 0x80000000 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 и 0x80000000
serializable proc exec 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 и 0x80000000 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 и 0x80000000
proc schema only 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 и 0x80000000 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 и 0x80000000
view schema only 0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 и 0x80000000 0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 и 0x80000000
func schema only 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 и 0x80000000 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 и 0x80000000
indexed view schema only 0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 и 0x80000000 0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 и 0x80000000

Примечание

Для обновляемых в очереди публикаций необходимо включить schema_option значения 0x8000 и 0x80 . Поддерживаемые значения schema_option для публикаций без SQL Server: 0x01, 0x02, 0x10, 0x40, 0x80, 0x1000, 0x4000 и 0X8000.

Пример

DECLARE @publication    AS sysname;
DECLARE @table AS sysname;
DECLARE @filterclause AS nvarchar(500);
DECLARE @filtername AS nvarchar(386);
DECLARE @schemaowner AS sysname;
SET @publication = N'AdvWorksProductTran'; 
SET @table = N'Product';
SET @filterclause = N'[DiscontinuedDate] IS NULL'; 
SET @filtername = N'filter_out_discontinued';
SET @schemaowner = N'Production';

-- Add a horizontally and vertically filtered article for the Product table.
-- Manually set @schema_option to ensure that the Production schema 
-- is generated at the Subscriber (0x8000000).
EXEC sp_addarticle 
    @publication = @publication, 
    @article = @table, 
    @source_object = @table,
    @source_owner = @schemaowner, 
    @schema_option = 0x80030F3,
    @vertical_partition = N'true', 
    @type = N'logbased',
    @filter_clause = @filterclause;

-- (Optional) Manually call the stored procedure to create the 
-- horizontal filtering stored procedure. Since the type is 
-- 'logbased', this stored procedures is executed automatically.
EXEC sp_articlefilter 
    @publication = @publication, 
    @article = @table, 
    @filter_clause = @filterclause, 
    @filter_name = @filtername;

-- Add all columns to the article.
EXEC sp_articlecolumn 
    @publication = @publication, 
    @article = @table;

-- Remove the DaysToManufacture column from the article
EXEC sp_articlecolumn 
    @publication = @publication, 
    @article = @table, 
    @column = N'DaysToManufacture', 
    @operation = N'drop';

-- (Optional) Manually call the stored procedure to create the 
-- vertical filtering view. Since the type is 'logbased', 
-- this stored procedures is executed automatically.
EXEC sp_articleview 
    @publication = @publication, 
    @article = @table,
    @filter_clause = @filterclause;
GO

Разрешения

Выполнять sp_addarticle могут только члены предопределенной роли сервера sysadmin или db_owner предопределенной роли базы данных.

См. также:

Определение статьи
sp_articlecolumn (Transact-SQL)
sp_articlefilter (Transact-SQL)
sp_articleview (Transact-SQL)
sp_changearticle (Transact-SQL)
sp_droparticle (Transact-SQL)
sp_helparticle (Transact-SQL)
sp_helparticlecolumns (Transact-SQL)
Хранимые процедуры репликации (Transact-SQL)
Публикация данных и объектов базы данных