sp_addarticle (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.Этот аргумент поддерживается только для обратной совместимости с SQL Server 6.5. Этот параметр не поддерживается для издателей 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 и 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 = ] '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 (default)
-или-
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_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 =] '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 (default)
-или-
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, 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) и может принимать одно из следующих значений.Значение
Описание
none
Не использует команду.
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
Реплицирует столбцы типа timestamp. Если не задано, столбцы типа timestamp реплицируются как binary.
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.
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, в типы данных, поддерживаемые SQL Server 2000. Сведения о сопоставлении этих типов см. в подразделе «Сопоставление новых типов данных для более ранних версий» раздела Использование нескольких версий SQL Server в топологии репликации.
0x40000000
Реплицировать разрешения.
0x80000000
Попытаться удалить зависимости для всех объектов, не являющихся частью публикации.
0x100000000
Использовать этот параметр для репликации атрибута FILESTREAM, если он указан в столбцах типа varbinary(max). Не указывайте этот параметр, если выполняется репликация таблиц на подписчики SQL Server 2005. Репликация таблиц с колонками FILESTREAM на подписчики SQL Server 2000 не поддерживается, независимо от того, как задан этот параметр схемы.
См. связанный параметр 0x800000000.
0x200000000
Преобразует типы данных даты и времени (date, time, datetimeoffset и datetime2), которые появились в SQL Server 2008, в типы данных, поддерживаемые предыдущими версиями SQL Server. Сведения о сопоставлении этих типов см. в подразделе «Сопоставление новых типов данных для более ранних версий» раздела Использование нескольких версий SQL Server в топологии репликации.
0x400000000
Проводит репликацию параметра сжатия для данных и индексов. Дополнительные сведения см. в разделе Создание сжатых таблиц и индексов.
0x800000000
Задайте этот параметр для сохранения данных атрибута FILESTREAM в его файловой группе на подписчике. Если этот параметр не задан, данные атрибута FILESTREAM сохраняются в файловой группе по умолчанию. Репликация не создает файловые группы, поэтому, если этот параметр задан, необходимо создать файловую группу до применения моментального снимка на подписчике. Дополнительные сведения о создании объектов до применения моментального снимка см. в разделе Выполнение сценариев до и после применения моментального снимка.
См. связанный параметр 0x100000000.
0x1000000000
Преобразует определяемые пользователем типы данных среды CLR, имеющие размер больше 8000 байт, в тип данных varbinary(max), чтобы столбцы с определяемым пользователем типом данных могли реплицироваться на подписчики, на которых выполняется SQL Server 2005.
0x2000000000
Преобразует тип данных hierarchyid в varbinary(max), чтобы столбцы типа hierarchyid можно было реплицировать на подписчики, использующие SQL Server 2005. Дополнительные сведения об использовании столбцов hierarchyid в реплицированных таблицах см. в разделе hierarchyid (Transact-SQL).
0x4000000000
Проводит репликацию всех фильтруемых индексов для таблицы. Дополнительные сведения о фильтруемых индексах см. в разделе Рекомендации по проектированию отфильтрованных индексов.
0x8000000000
Преобразует типы данных geography и geometry в тип varbinary(max), чтобы обеспечить возможность репликации столбцов этих типов на подписчики SQL Server 2005.
0x10000000000
Производит репликацию индексов для столбцов типа geography и geometry.
0x20000000000
Производит репликацию атрибута SPARSE для столбцов. Дополнительные сведения об этом атрибуте см. в разделе Использование разреженных столбцов.
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_object следует использовать вместо аргумента source_table. Дополнительные сведения о типах объектов, которые могут быть опубликованы при репликации моментальных снимков или репликации транзакций, см. в разделе Публикация данных и объектов базы данных.[ @artid = ] article_ID OUTPUT
Идентификатор новой статьи. Аргумент article_ID является параметром предложения OUTPUT, имеет тип int и значение по умолчанию NULL.[ @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, уже использовано, агент распространителя создает новый диапазон идентификаторов. Аргумент threshold имеет тип bigint и значение по умолчанию NULL. Используется он в случаях, когда аргумент identityrangemanagementoption равен auto или аргумент auto_identity_range равен true. Для издателей Oracle не поддерживается.[ @force_invalidate_snapshot = ] force_invalidate_snapshot
Подтверждает, что действие, выполненное этой хранимой процедурой, может сделать недействительным существующий моментальный снимок. Аргумент force_invalidate_snapshot имеет тип bit и значение по умолчанию 0.Значение 0 указывает, что добавление статьи не приводит к недействительности моментального снимка. Если же хранимая процедура определяет, что изменение требует создания нового моментального снимка, возникает ошибка и изменение не выполняется.
Значение 1 указывает, что добавление статьи может привести к признанию моментального снимка недействительным, и, если имеются подписки, требующие нового моментального снимка, дает разрешение на пометку текущего снимка как устаревшего, после чего создается новый снимок.
[ @use_default_datatypes = ] use_default_datatypes
Показывает, используются ли сопоставления типов столбцов по умолчанию при публикации статьи издателем Oracle. Аргумент use_default_datatypes имеет тип bit и значение по умолчанию 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) и может принимать одно из следующих значений.Значение
Описание
none
При репликации не выполняется явное управление диапазонами идентификаторов. Этот параметр рекомендуется использовать только для обеспечения обратной совместимости с более ранними версиями SQL Server. При репликации узла указывать его нельзя.
manual
Помечает столбец идентификаторов параметром NOT FOR REPLICATION, чтобы включить обработку диапазона идентификаторов вручную.
auto
Задает автоматическое управление диапазонами идентификаторов.
NULL (по умолчанию)
По умолчанию эквивалентно значению none, если значение аргумента auto_identity_range отлично от true. По умолчанию эквивалентно значению manual в одноранговой топологии по умолчанию (значение аргумента auto_identity_range не учитывается).
Если аргумент identityrangemanagementoption равен NULL, то для обеспечения обратной совместимости проверяется значение аргумента auto_identity_range. Если же аргумент identityrangemanagementoption не равен NULL, значение аргумента auto_identity_range не учитывается.
Дополнительные сведения см. в разделе Репликация столбцов идентификаторов.
[ @publisher = ] 'publisher'
Задает издатель, отличный от SQL Server. Аргумент publisher имеет тип sysname и значение по умолчанию NULL.Примечание Аргумент publisher не следует использовать при добавлении статьи к издателю SQL Server.
[ @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 для добавления столбца. Дополнительные сведения см. в разделе Аспекты использования репликации всех типов.
При добавлении статьи в публикацию, поддерживающую одноранговую репликацию транзакций, существуют следующие ограничения.
Для всех статей, создаваемых на основе журналов, должны быть указаны параметризованные инструкции. В значение status необходимо включить значение 16.
Имя и владелец целевой таблицы должны соответствовать имени и владельцу исходной таблицы.
Статья не может быть отфильтрована горизонтально или вертикально.
Автоматическое управление диапазонами идентификаторов не поддерживается. Аргументу identityrangemanagementoption нужно присвоить значение «manual».
Если в таблице имеется столбец типа timestamp, необходимо включить в значение аргумента schema_option бит 0x08, чтобы столбец был реплицирован как тип timestamp.
Аргументы ins_cmd, upd_cmd и del_cmd не могут иметь значение SQL.
Дополнительные сведения см. в разделе Одноранговая репликация транзакций.
При публикации объектов их определения копируются на подписчики. При публикации объекта базы данных, который зависит от одного или нескольких других объектов, обязательна публикация всех объектов, на которые он ссылается. Например, при публикации представления, зависящего от таблицы, необходимо также опубликовать и таблицу.
Если аргумент vertical_partition имеет значение true, хранимая процедура sp_addarticle не создает представление до тех пор, пока не будет вызвана процедура sp_articleview (после добавления последнего столбца с помощью процедуры sp_articlecolumn).
Если публикация поддерживает обновляемые подписки, а опубликованная таблица не содержит столбца с типом uniqueidentifier, хранимая процедура sp_addarticle добавляет в таблицу столбец типа uniqueidentifier автоматически.
При репликации на подписчик, который не является экземпляром SQL Server (разнородная репликация), только инструкции Transact-SQL поддерживаются для команд INSERT, UPDATE и DELETE.
Когда запущен агент чтения журнала, добавление статьи к одноранговой публикации может привести к взаимоблокировке между агентом чтения журнала и процессом, который добавляет статью. Чтобы избежать этой проблемы, перед добавлением статьи к одноранговой публикации используйте монитор репликации, чтобы остановить агент чтения журнала на узле, на котором производится добавление этой статьи. Перезапустите агент чтения журнала после добавления статьи.
Параметры схемы по умолчанию
В следующей таблице приведены значения по умолчанию, задаваемые механизмом репликации, если аргумент 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 |
logbased |
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 |
Примечание |
---|
Если публикация поддерживает очередь обновления, к значениям по умолчанию, приведенным в таблице, прибавляется значение 0x80 аргумента schema_option. Для публикаций, отличных от публикаций SQL Server, аргумент schema_option имеет по умолчанию значение 0x050D3. |
Допустимые параметры схемы
В следующей таблице приведены значения аргумента schema_option, допустимые при конкретных типах репликации (показаны в первой строке) и статей (показаны в первом столбце).
Тип статьи |
Тип репликации |
|
---|---|---|
|
Репликация транзакций |
Репликация моментальных снимков |
logbased |
Все параметры |
Все параметры, кроме 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. Публикации, отличные от публикаций SQL Server, поддерживают следующие значения аргумента schema_option: 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.
См. также