sp_addarticle (Transact-SQL)

Область применения: SQL Server Управляемый экземпляр SQL Azure

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

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

Синтаксис

sp_addarticle
    [ @publication = ] N'publication'
    , [ @article = ] N'article'
    [ , [ @source_table = ] N'source_table' ]
    [ , [ @destination_table = ] N'destination_table' ]
    [ , [ @vertical_partition = ] N'vertical_partition' ]
    [ , [ @type = ] N'type' ]
    [ , [ @filter = ] N'filter' ]
    [ , [ @sync_object = ] N'sync_object' ]
    [ , [ @ins_cmd = ] N'ins_cmd' ]
    [ , [ @del_cmd = ] N'del_cmd' ]
    [ , [ @upd_cmd = ] N'upd_cmd' ]
    [ , [ @creation_script = ] N'creation_script' ]
    [ , [ @description = ] N'description' ]
    [ , [ @pre_creation_cmd = ] N'pre_creation_cmd' ]
    [ , [ @filter_clause = ] N'filter_clause' ]
    [ , [ @schema_option = ] schema_option ]
    [ , [ @destination_owner = ] N'destination_owner' ]
    [ , [ @status = ] status ]
    [ , [ @source_owner = ] N'source_owner' ]
    [ , [ @sync_object_owner = ] N'sync_object_owner' ]
    [ , [ @filter_owner = ] N'filter_owner' ]
    [ , [ @source_object = ] N'source_object' ]
    [ , [ @artid = ] artid OUTPUT ]
    [ , [ @auto_identity_range = ] N'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 = ] N'identityrangemanagementoption' ]
    [ , [ @publisher = ] N'publisher' ]
    [ , [ @fire_triggers_on_snapshot = ] N'fire_triggers_on_snapshot' ]
[ ; ]

Аргументы

[ @publication = ] N'publication'

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

[ @article = ] N'article'

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

[ @source_table = ] N'source_table'

Этот параметр не рекомендуется; вместо этого используйте @source_object . @source_table — nvarchar(386) с значением по умолчаниюNULL. @source_table не поддерживается для издателей Oracle.

[ @destination_table = ] N'destination_table'

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

[ @vertical_partition = ] N'vertical_partition'

Включает и выключает фильтрацию столбцов в статье таблицы. @vertical_partition — nchar(5) с значением по умолчаниюfalse.

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

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

[ @type = ] N'type'

Тип статьи. @type — sysname, значение по умолчанию NULLи может быть одним из следующих значений.

значение Описание
aggregate schema only Только агрегатная функция со схемой.
func schema only Только функция со схемой.
indexed view logbased Статья индексированного представления, создаваемая на основе журнала. Не поддерживается для издателей Oracle. Для этого типа статьи базовая таблица не должна быть опубликована отдельно.
indexed view logbased manualboth Создаваемая на основе журнала статья индексированного представления с фильтрацией вручную и представлением вручную. Для этого параметра необходимо указать параметры @sync_object и @filter . Для этого типа статьи базовая таблица не должна быть опубликована отдельно. Не поддерживается для издателей Oracle.
indexed view logbased manualfilter Создаваемая на основе журнала статья индексированного представления с фильтрацией вручную. Для этого параметра необходимо указать параметры @sync_object и @filter . Для этого типа статьи базовая таблица не должна быть опубликована отдельно. Не поддерживается для издателей Oracle.
indexed view logbased manualview Создаваемая на основе журнала статья индексированного представления с представлением вручную. Для этого параметра необходимо указать параметр @sync_object . Для этого типа статьи базовая таблица не должна быть опубликована отдельно. Не поддерживается для издателей Oracle.
indexed view schema only Только индексированное представление со схемой. Для этого типа статьи базовая таблица должна быть также опубликована.
logbased (по умолчанию) Статья на основе журнала.
logbased manualboth Создаваемая на основе журнала статья с фильтрацией вручную и представлением вручную. Для этого параметра необходимо указать параметры @sync_object и @filter . Не поддерживается для издателей Oracle.
logbased manualfilter Создаваемая на основе журнала статья с фильтрацией вручную. Для этого параметра необходимо указать параметры @sync_object и @filter . Не поддерживается для издателей 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 = ] N'filter'

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

[ @sync_object = ] N'sync_object'

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

[ @ins_cmd = ] N'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 = ] N'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_<table>

–или–

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 = ] N'upd_cmd'

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

значение Описание
NONE Не выполняется никаких действий.
CALL sp_MSupd_<table>

–или–

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

–или–

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_<table>

–или–

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, MCALLSCALLи XCALL зависит от объема данных, распространяемых подписчику. Синтаксис CALL передает все значения для всех вставленных и удаленных столбцов. Синтаксис SCALL передает значения только для затронутых столбцов. Синтаксис XCALL передает значения для всех столбцов, изменяемых или нет, включая предыдущее значение столбца. Дополнительные сведения см. в статьях о транзакциях. Укажите способ распространения изменений.

[ @creation_script = ] N'creation_script'

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

[ @description = ] N'description'

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

[ @pre_creation_cmd = ] N'pre_creation_cmd'

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

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

[ @filter_clause = ] N'filter_clause'

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

[ @schema_option = ] schema_option

Битовая маска параметра создания схемы для данной статьи. @schema_option является varbinary(8), по умолчанию NULLи может быть | (битовое ИЛИ) продукт одного или нескольких из следующих значений:

Примечание.

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

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

Примечание. Этот параметр должен быть установлен для издателей Oracle, чтобы включить сравнения с учетом регистра.
0x2000 1 Реплицирует расширенные свойства, связанные с исходным объектом опубликованной статьи.
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), превышающие 8000 байт в 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.
0x20000000000 Производит репликацию атрибута SPARSE для столбцов. Дополнительные сведения об этом атрибуте см. в разделе "Использование разреженных столбцов".
0x40000000000 Включите скрипты агентом моментальных снимков для создания оптимизированной для памяти таблицы на подписчике.
0x80000000000 Преобразует кластеризованный индекс в некластеризованный индекс для статей, оптимизированных для памяти.
0x400000000000 Реплицирует все некластеризованные индексы columnstore в таблицах.
0x800000000000 Реплицирует все отфильтрованные некластеризованные индексы columnstore в таблицах.
NULL Репликация автоматически задает @schema_option значение по умолчанию, значение которого зависит от других свойств статьи. Значения, которые будут выбраны на основе типа статьи и типа репликации, приведены в таблице «Параметры схемы по умолчанию» в разделе «Примечания».

Значением по умолчанию для публикаций, отличных от SQL Server, является 0x050D3.

1 Не поддерживается для издателей Oracle.

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

[ @destination_owner = ] N'destination_owner'

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

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

Для поддержки подписчиков, отличных от SQL Server, необходимо @destination_ownerNULL.

[ @status = ] состояние

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

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

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

[ @source_owner = ] N'source_owner'

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

[ @sync_object_owner = ] N'sync_object_owner'

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

[ @filter_owner = ] N'filter_owner'

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

[ @source_object = ] N'source_object'

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

[ @artid = ] artid OUTPUT

Идентификатор статьи новой статьи. @artid — это параметр OUTPUT типа int.

[ @auto_identity_range = ] N'auto_identity_range'

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

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

Примечание.

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

[ @pub_identity_range = ] pub_identity_range

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

[ @identity_range = ] identity_range

Определяет размер диапазона на подписчике, если в статье задано значение auto или @identityrangemanagementoption @auto_identity_range задано значение true. @identity_range имеет большой размер с значением по умолчаниюNULL. Используется при значении true @auto_identity_range. @identity_range не поддерживается для издателей Oracle.

[ @threshold = ] пороговое значение

Процентное значение, определяющее, когда агентом распространителя выделяется новый диапазон идентификаторов. Если используется процент значений, указанных в @threshold, агент распространения создает новый диапазон удостоверений. @threshold имеет значение int с значением по умолчаниюNULL. Используется, если для @identityrangemanagementoption задано значение auto или @auto_identity_range задано значение true. @threshold не поддерживается для издателей 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.

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

Примечание.

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

[ @identityrangemanagementoption = ] N'identityrangemanagementoption'

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

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

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

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

[ @publisher = ] N'publisher'

Указывает издатель, отличный от SQL Server. @publisher — sysname с значением по умолчаниюNULL.

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

[ @fire_triggers_on_snapshot = ] N'fire_triggers_on_snapshot'

Если реплицированные триггеры пользователя выполняются при применении начального моментального снимка. @fire_triggers_on_snapshot — nvarchar(5) с значением по умолчаниюfalse. true означает, что триггеры пользователя в реплицированной таблице выполняются при применении моментального снимка. Чтобы реплицируемые триггеры реплицировались, значение битовой маски @schema_option должно содержать значение 0x100.

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

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

Замечания

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

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

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

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

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

  • Статью нельзя фильтровать по горизонтали или по вертикали.

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

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

  • Значение SQL невозможно указать для @ins_cmd, @upd_cmd и @del_cmd.

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

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

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

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

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

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

При настройке @del_cmd в NONE или @ins_cmd NONE UPDATE распространение команд также может повлиять на распространение команд, не отправляя эти команды при возникновении ограниченного обновления. (Привязанное обновление является типом UPDATE оператора издателя, который реплицируется в виде DELETE/INSERT пары на подписчике.)

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

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

Тип статьи Репликация транзакций репликация моментальных снимков;
Только агрегатная схема 0x01 0x01
Только схема func 0x01 0x01
Только индексированные схемы представления 0x01 0x01
индексированное представление logbased 0x30F3 0x3071
Индексированные представления logbase manualboth 0x30F3 0x3071
индексированное представление logbased manualfilter 0x30F3 0x3071
Индексированное представление logbased manualview 0x30F3 0x3071
logbased 0x30F3 0x3071
logbased manualfilter 0x30F3 0x3071
logbased manualview 0x30F3 0x3071
proc exec 0x01 0x01
Только схема proc 0x01 0x01
serializable proc exec 0x01 0x01
Просмотр только схемы 0x01 0x01

Примечание.

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

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

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

Тип статьи Репликация транзакций репликация моментальных снимков;
logbased Все параметры Все параметры, но 0x02
logbased manualfilter Все параметры Все параметры, но 0x02
logbased manualview Все параметры Все параметры, но 0x02
индексированное представление logbased Все параметры Все параметры, но 0x02
индексированное представление logbased manualfilter Все параметры Все параметры, но 0x02
Индексированное представление logbased manualview Все параметры Все параметры, но 0x02
Индексированные представления logbase manualboth Все параметры Все параметры, но 0x02
proc exec 0x01, 0x20, 0x20000x80000000x4000000x20000000x100000000x800000, 0x20000000, и 0x400000000x80000000 0x01, 0x20, 0x20000x80000000x4000000x20000000x100000000x800000, 0x20000000, и 0x400000000x80000000
serializable proc exec 0x01, 0x20, 0x20000x80000000x4000000x20000000x100000000x800000, 0x20000000, и 0x400000000x80000000 0x01, 0x20, 0x20000x80000000x4000000x20000000x100000000x800000, 0x20000000, и 0x400000000x80000000
Только схема proc 0x01, 0x20, 0x20000x80000000x4000000x20000000x100000000x800000, 0x20000000, и 0x400000000x80000000 0x01, 0x20, 0x20000x80000000x4000000x20000000x100000000x800000, 0x20000000, и 0x400000000x80000000
Просмотр только схемы 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 0x01, 0x20, 0x20000x80000000x4000000x20000000x100000000x800000, 0x20000000, и 0x400000000x80000000 0x01, 0x20, 0x20000x80000000x4000000x20000000x100000000x800000, 0x20000000, и 0x400000000x80000000
Только индексированные схемы представления 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, 0x10000x4000 0x400x80и .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

Разрешения

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