sp_addarticle (Transact-SQL)

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

Значок ссылки на разделСинтаксические обозначения в 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_таблица (по умолчанию)

    или

    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_таблица (по умолчанию)

    или

    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) и может принимать одно из следующих значений.

    Значение

    Описание

    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 автоматически.

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

В следующей таблице приведены значения по умолчанию, задаваемые механизмом репликации, если аргумент 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.