sp_addarticle (Transact-SQL)
Изменения: 14 апреля 2006 г.
Создает статью и добавляет ее в публикацию. Эта хранимая процедура выполняется на издателе в базе данных публикации.
Синтаксические обозначения в Transact-SQL
Синтаксис
sp_addarticle [ @publication = ] 'publication'
, [ @article = ] 'article'
[ , [ @source_table = ] 'source_table' ]
[ , [ @destination_table = ] 'destination_table' ]
[ , [ @vertical_partition = ] 'vertical_partition' ]
[ , [ @type = ] 'type' ]
[ , [ @filter = ] 'filter' ]
[ , [ @sync_object= ] 'sync_object' ]
[ , [ @ins_cmd = ] 'ins_cmd' ]
[ , [ @del_cmd = ] 'del_cmd' ]
[ , [ @upd_cmd = ] 'upd_cmd' ]
[ , [ @creation_script = ] 'creation_script' ]
[ , [ @description = ] 'description' ]
[ , [ @pre_creation_cmd = ] 'pre_creation_cmd' ]
[ , [ @filter_clause = ] 'filter_clause' ]
[ , [ @schema_option = ] schema_option ]
[ , [ @destination_owner = ] 'destination_owner' ]
[ , [ @status = ] status ]
[ , [ @source_owner = ] 'source_owner' ]
[ , [ @sync_object_owner = ] 'sync_object_owner' ]
[ , [ @filter_owner = ] 'filter_owner' ]
[ , [ @source_object = ] 'source_object' ]
[ , [ @artid = ] article_ID OUTPUT ]
[ , [ @auto_identity_range = ] 'auto_identity_range' ]
[ , [ @pub_identity_range = ] pub_identity_range ]
[ , [ @identity_range = ] identity_range ]
[ , [ @threshold = ] threshold ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @use_default_datatypes = ] use_default_datatypes
[ , [ @identityrangemanagementoption = ] identityrangemanagementoption ]
[ , [ @publisher = ] 'publisher' ]
[ , [ @fire_triggers_on_snapshot = ] 'fire_triggers_on_snapshot' ]
Аргументы
- [ @publication = ] 'publication'
Имя публикации, которая содержит статью. Это имя должно быть уникальным в базе данных. Аргумент publication имеет тип sysname и не имеет значения по умолчанию.
- [ @article = ] 'article'
Имя статьи. Это имя должно быть уникальным в публикации. Аргумент article имеет тип sysname и не имеет значения по умолчанию.
- [ @source_table = ] 'source_table'
Этот устаревший аргумент поддерживается только для обратной совместимости сценариев. Используйте вместо него аргумент source_object. Этот аргумент не поддерживается для издателей Oracle.
- [ @destination_table = ] 'destination_table'
Имя целевой таблицы (таблицы подписки), если оно отличается от значения аргумента source_table или хранимой процедуры. Аргумент destination_table имеет тип sysname и значение по умолчанию NULL, означающее, что аргументы source_table и destination_table эквивалентны.
[ @vertical_partition = ] 'vertical_partition'
Включает и выключает фильтрацию столбцов в статье таблицы. Аргумент vertical_partition имеет тип nchar(5) и значение по умолчанию FALSE.При значении false вертикальная фильтрация не выполняется и публикуются все столбцы.
При значении true очищаются все столбцы, за исключением объявленного первичного ключа, столбцов, поддерживающих значения NULL и не имеющих значений по умолчанию, и столбцов уникальных ключей. Столбцы добавляются с помощью хранимой процедуры sp_articlecolumn.
[ @type = ] 'type'
Тип статьи. Аргумент type имеет тип sysname и может принимать одно из следующих значений.Значение Описание aggregate schema only
Только статистическая функция со схемой.
func schema only
Только функция со схемой.
indexed view logbased
Статья индексированного представления, создаваемая на основе журнала. Для издателей Oracle не поддерживается. Для этого типа статьи нет необходимости отдельно публиковать базовую таблицу.
indexed view logbased manualboth
Создаваемая на основе журнала статья индексированного представления с фильтрацией вручную и представлением вручную. При выборе этого значения нужно указать аргументы sync_object и 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 не поддерживается.
proc schema only
Процедура только со схемой. Для издателей Oracle не поддерживается.
serializable proc exec
Реплицирует выполнение хранимой процедуры только в том случае, если она выполняется в контексте сериализуемой транзакции. Для издателей Oracle не поддерживается.
view schema only
Только представление со схемой. Для издателей Oracle не поддерживается. При использовании этого параметра необходимо также публиковать базовую таблицу.
- [ @filter = ] 'filter'
Хранимая процедура (созданная с параметром FOR REPLICATION), используемая для горизонтальной фильтрации таблицы. Аргумент filter имеет тип nvarchar(386) и значение по умолчанию NULL. Чтобы создать представление и хранимую процедуру фильтра, необходимо вручную выполнить процедуры sp_articleview и sp_articlefilter. Если этот аргумент не равен NULL, процедура фильтра не создается (предполагается, что хранимая процедура создана вручную).
- [ @sync_object = ] 'sync_object'
Имя таблицы или представления, используемое для создания файла данных, представляющего моментальный снимок статьи. Аргумент sync_object имеет тип nvarchar(386) и значение по умолчанию NULL. Если аргумент равен NULL, вызывается процедура sp_articleview, чтобы автоматически создать представление, используемое для формирования выходного файла. Это происходит после добавления столбцов с помощью хранимой процедуры sp_articlecolumn. Если этот аргумент не равен NULL, представление не создается (предполагается, что оно создано вручную).
[ @ins_cmd = ] 'ins_cmd'
Тип команды репликации, используемой при репликации операций вставки для данной статьи. Аргумент ins_cmd имеет тип nvarchar(255) и может принимать одно из следующих значений.Значение Описание NONE
Не выполняется никаких действий.
CALL sp_MSins_table (по умолчанию)
-или-
CALL custom_stored_procedure_name
Вызывается хранимая процедура, выполняемая на подписчике. Чтобы использовать этот способ репликации, укажите с помощью аргумента schema_option, что хранимая процедура должна быть создана автоматически, или создайте хранимую процедуру в целевой базе данных каждого подписчика на статью. custom_stored_procedure — это имя хранимой процедуры, созданной пользователем. В значении sp_MSins_table вместо части _table указывается имя целевой таблицы. Если указано значение destination_owner, оно присоединяется к началу имени целевой таблицы. Например, для таблицы ProductCategory, принадлежащей на подписчике схеме Production, этот параметр имел бы значение
CALL sp_MSins_ProductionProductCategory
. Для статьи в одноранговой топологии репликации значение _table дополняется значением идентификатора GUID. Обновление подписчиков с использованием аргумента custom_stored_procedure не поддерживается.SQL или NULL
Реплицирует инструкцию INSERT. Инструкции INSERT предоставляются значения всех столбцов, опубликованных в статье. Эта команда реплицируется при операции вставки:
INSERT INTO <table name> VALUES (c1value, c2value, c3value, ..., cnvalue)
Дополнительные сведения см. в разделе Указание способа распространения изменений для статей транзакций.
[ @del_cmd =] 'del_cmd'
Тип команды репликации, используемой при репликации операций удаления для данной статьи. Аргумент del_cmd имеет тип nvarchar(255) и может принимать одно из следующих значений.Значение Описание NONE
Не выполняется никаких действий.
CALLsp_MSdel_table (по умолчанию)
-или-
CALL custom_stored_procedure_name
Вызывается хранимая процедура, выполняемая на подписчике. Чтобы использовать этот способ репликации, укажите с помощью аргумента schema_option, что хранимая процедура должна быть создана автоматически, или создайте хранимую процедуру в целевой базе данных каждого подписчика на статью. custom_stored_procedure — это имя хранимой процедуры, созданной пользователем. В значении sp_MSdel_table вместо части _table указывается имя целевой таблицы. Если указано значение destination_owner, оно присоединяется к началу имени целевой таблицы. Например, для таблицы ProductCategory, принадлежащей на подписчике схеме Production, этот параметр имел бы значение
CALL sp_MSdel_ProductionProductCategory
. Для статьи в одноранговой топологии репликации значение _table дополняется значением идентификатора GUID. Обновление подписчиков с использованием параметра custom_stored_procedure не поддерживается.XCALL sp_MSdel_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 (по умолчанию)
-или-
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, система автоматически создает допустимый параметр создания схемы на основе других свойств статьи. Значения, которые будут выбраны на основе типа статьи и типа репликации, приведены в таблице Параметры схемы по умолчанию в разделе «Примечания». Значение
[ @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 и может быть результатом операции | (побитовое ИЛИ), выполненной над следующими значениями.Значение
- [ @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 автоматически.
Для статей, поддерживающих преобразуемые подписки, значения аргументов ins_cmd, del_cmd и upd_cmd не учитываются.
Параметры схемы по умолчанию
В следующей таблице приведены значения по умолчанию, задаваемые механизмом репликации, если аргумент 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 |
serialized 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 |
serialized 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. |
Разрешения
Хранимую процедуру sp_addarticle могут выполнять только члены фиксированной серверной роли sysadmin и члены фиксированной роли базы данных db_owner.
Пример
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_articlecolumn (Transact-SQL)
sp_articlefilter (Transact-SQL)
sp_articleview (Transact-SQL)
sp_changearticle (Transact-SQL)
sp_droparticle (Transact-SQL)
sp_helparticle (Transact-SQL)
sp_helparticlecolumns (Transact-SQL)
Хранимые процедуры репликации (Transact-SQL)
Другие ресурсы
How to: Define an Article (Replication Transact-SQL Programming)
Публикация данных и объектов базы данных
Справка и поддержка
Получение помощи по SQL Server 2005
Журнал изменений
Версия | Журнал |
---|---|
14 апреля 2006 г. |
|
5 декабря 2005 г. |
|