sp_changearticle (Transact-SQL)
Область применения: SQL Server Управляемый экземпляр SQL Azure
Изменяет свойства статьи в публикации транзакций или в публикации моментального снимка. Эта хранимая процедура выполняется на издателе в базе данных публикации.
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_changearticle
[ [ @publication = ] N'publication' ]
[ , [ @article = ] N'article' ]
[ , [ @property = ] N'property' ]
[ , [ @value = ] N'value' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @publisher = ] N'publisher' ]
[ ; ]
Аргументы
[ @publication = ] N'publication'
Имя публикации, содержащей статью. @publication — sysname с значением по умолчаниюNULL
.
[ @article = ] N'article'
Имя статьи, свойство которой необходимо изменить. @article — sysname с значением по умолчаниюNULL
.
[ @property = ] N'property'
Свойство статьи для изменения. @property — nvarchar(100) с значением по умолчаниюNULL
.
[ @value = ] N'value'
Новое значение свойства статьи. @value — nvarchar(255) с значением по умолчаниюNULL
.
Эта таблица описывает свойства статей и значения этих свойств.
Свойство | Значения | Description |
---|---|---|
creation_script |
Путь и имя скрипта схемы статьи, используемого для создания целевых таблиц. Значение по умолчанию — NULL . |
|
del_cmd |
DELETE оператор для выполнения; в противном случае он создается из журнала. |
|
description |
Новая запись описания статьи. | |
dest_object |
Предоставляется для обратной совместимости. Используйте dest_table . |
|
dest_table |
Новая целевая таблица. | |
destination_owner |
Имя владельца целевого объекта. | |
filter |
Новая хранимая процедура для фильтрации таблицы (горизонтальная фильтрация). Значение по умолчанию — NULL . Невозможно изменить публикации в одноранговой репликации. |
|
fire_triggers_on_snapshot |
true |
Реплицированные пользовательские триггеры срабатывают при применении исходного моментального снимка. Примечание. Для репликации триггеров значение битовой маски schema_option должно включать значение 0x100 . |
false |
Реплицированные триггеры пользователей не выполняются при применении начального моментального снимка. | |
identity_range |
Управляет размером диапазонов идентификаторов, назначенных на подписчике. В случае одноранговой репликации не поддерживается. | |
ins_cmd |
INSERT оператор для выполнения; в противном случае он создается из журнала. |
|
pre_creation_cmd |
Команда предустановки, которая может удалять, удалять или усечь целевую таблицу перед применением синхронизации. | |
none |
Не использует команду. | |
drop |
Удаляет целевую таблицу полностью. | |
delete |
Удаляет целевую таблицу. | |
truncate |
Усекает целевую таблицу. | |
pub_identity_range |
Управляет размером диапазонов идентификаторов, назначенных на подписчике. В случае одноранговой репликации не поддерживается. | |
schema_option |
Указывает битовую карту параметра формирования схемы для данной статьи. schema_option — binary(8). Дополнительные сведения см. в разделе с примечаниями. |
|
0x00 |
Отключает выполнение сценариев агентом моментальных снимков. | |
0x01 |
Создает создание объекта (CREATE TABLE CREATE PROCEDURE и т. д.). |
|
0x02 |
Создает хранимые процедуры, которые распространяют изменения в статье, если они заданы. | |
0x04 |
Столбцы удостоверений скриптируются с помощью IDENTITY свойства. |
|
0x08 |
Репликация столбцов метки времени. Если не задано, столбцы метки времени реплицируются как двоичные. | |
0x10 |
Создает соответствующий кластеризованный индекс. | |
0x20 |
Преобразует определяемые пользователем типы данных (UDT) в базовые типы данных подписчика. Этот параметр нельзя использовать, если столбец CHECK UDT является частью первичного ключа или DEFAULT если вычисляемый столбец ссылается на столбец UDT. Не поддерживается для издателей Oracle. |
|
0x40 |
Создает соответствующие некластеризованные индексы. | |
0x80 |
Включает объявленную ссылочную целостность по первичным ключам. | |
0x100 |
Реплицирует пользовательские триггеры для статьи таблицы, если заданы. | |
0x200 |
Реплицирует FOREIGN KEY ограничения. Если указанная таблица не является частью публикации, все FOREIGN KEY ограничения для опубликованной таблицы не реплицируются. |
|
0x400 |
Реплицирует CHECK ограничения. |
|
0x800 |
Реплицирует значения по умолчанию. | |
0x1000 |
Реплицирует параметры сортировки на уровне столбцов. | |
0x2000 |
Реплицирует расширенные свойства, связанные с исходным объектом опубликованной статьи. | |
0x4000 |
Реплицирует уникальные ключи для статьи таблицы, если они определены. | |
0x8000 |
Реплицирует первичный ключ и уникальные ключи в таблице в виде ограничений с помощью ALTER TABLE инструкций.Примечание. Этот параметр не рекомендуется. Взамен используйте 0x80 и 0x4000 . |
|
0x10000 |
Реплицирует CHECK ограничения таким образом NOT FOR REPLICATION , чтобы ограничения не применялись во время синхронизации. |
|
0x20000 |
Реплицирует FOREIGN KEY ограничения таким образом NOT FOR REPLICATION , чтобы ограничения не применялись во время синхронизации. |
|
0x40000 |
Реплицирует файловые группы, связанные с секционированной таблицей или индексом. | |
0x80000 |
Реплицирует схему секционирования для секционированной таблицы. | |
0x100000 |
Реплицирует схему секционирования для секционированного индекса. | |
0x200000 |
Реплицирует статистику таблицы. | |
0x400000 |
Привязки по умолчанию. | |
0x800000 |
Привязки правил. | |
0x1000000 |
Полнотекстовый индекс. | |
0x2000000 |
Коллекции схем XML, привязанные к xml-столбцам , не реплицируются. | |
0x4000000 |
Реплицирует индексы в xml-столбцах . | |
0x8000000 |
Создает все схемы, отсутствующие в настоящий момент на подписчике. | |
0x10000000 |
Преобразует xml-столбцы в ntext на подписчике. | |
0x20000000 |
Преобразует типы данных больших объектов (nvarchar(max), varchar(max)и varbinary(max)), которые были введены в SQL Server 2005 (9.x) в типы данных, поддерживаемые в SQL Server 2000 (8.x). | |
0x40000000 |
Реплицировать разрешения. | |
0x80000000 |
Попытайтесь удалить зависимости на объекты, которые не являются частью публикации. | |
0x100000000 |
Используйте этот параметр для репликации атрибута FILESTREAM , если он указан в столбцах varbinary(max ). Не указывайте этот параметр, если вы реплицируете таблицы в подписчики SQL Server 2005 (9.x). Репликация таблиц с столбцами FILESTREAM в подписчики SQL Server 2000 (8.x) не поддерживается независимо от того, как задан этот параметр схемы.См. соответствующий параметр 0x800000000 . |
|
0x200000000 |
Преобразует типы данных даты и времени (date, time, datetimeoffset и datetime2), представленные в SQL Server 2008 (10.0.x), в типы данных, поддерживаемые в более ранних версиях SQL Server. | |
0x400000000 |
Проводит репликацию параметра сжатия для данных и индексов. Дополнительные сведения см. в разделе Сжатие данных. | |
0x800000000 |
Задайте этот параметр для сохранения данных атрибута FILESTREAM в его файловой группе на подписчике. Если этот параметр не задан, данные FILESTREAM хранятся в файловой группе по умолчанию. Репликация не создает файловые группы; Таким образом, если этот параметр задан, необходимо создать файловую группу перед применением моментального снимка на подписчике. Дополнительные сведения о создании объектов перед применением моментального снимка см. в разделе "Выполнение скриптов до и после применения моментального снимка". См. соответствующий параметр 0x100000000 . |
|
0x1000000000 |
Преобразует определяемые пользователем типы среды CLR (UDT) размером более 8000 байт в varbinary(max), чтобы столбцы типа UDT можно реплицировать на подписчиков, работающих под управлением SQL Server 2005 (9.x). | |
0x2000000000 |
Преобразует тип данных hierarchyid в varbinary(max), чтобы столбцы иерархии типов можно реплицировать в подписчиков, работающих под управлением SQL Server 2005 (9.x). Дополнительные сведения об использовании столбцов hierarchyid в реплицированных таблицах см . в справочнике по методу типа данных hierarchyid. | |
0x4000000000 |
Проводит репликацию всех фильтруемых индексов для таблицы. Дополнительные сведения о фильтруемых индексах см. в статье Создание фильтруемых индексов. | |
0x8000000000 |
Преобразует типы данных geography и geometry в varbinary(max), чтобы столбцы этих типов можно реплицировать в подписчиков, работающих под управлением SQL Server 2005 (9.x). | |
0x10000000000 |
Реплицирует индексы по столбцам типа geography и geometry. | |
0x20000000000 |
Реплицирует SPARSE атрибут для столбцов. Дополнительные сведения об этом атрибуте см. в разделе "Использование разреженных столбцов". |
|
0x40000000000 |
Включите скрипты агентом моментальных снимков для создания оптимизированной для памяти таблицы на подписчике. | |
0x80000000000 |
Преобразует кластеризованный индекс в некластеризованный индекс для статей, оптимизированных для памяти. | |
status |
Устанавливает новое состояние свойства. | |
dts horizontal partitions |
Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется. | |
include column names |
Имена столбцов включаются в реплицированную INSERT инструкцию. |
|
no column names |
Имена столбцов не включаются в реплицированную INSERT инструкцию. |
|
no dts horizontal partitions |
Горизонтальная секция статьи не определена преобразуемой подпиской. | |
none |
Очищает все параметры состояния в таблице sysarticles и помечает статью как неактивную. | |
parameters |
Изменения передаются подписчику при помощи параметризированных команд. Это значение по умолчанию для новой статьи. | |
string literals |
Изменения передаются подписчику при помощи значений строковых литералов. | |
sync_object |
Имя таблицы или представления, которые используются для создания выходного файла синхронизации. Значение по умолчанию — NULL . Не поддерживается для издателей Oracle. |
|
tablespace |
Определяет табличное пространство, используемое таблицей, выполняющей протоколирование, для статьи, опубликованной с базы данных Oracle. Дополнительные сведения см. в статье Управление табличными пространствами Oracle. | |
threshold |
Процентное значение, определяющее, когда агентом распространителя выделяется новый диапазон идентификаторов. В случае одноранговой репликации не поддерживается. | |
type |
Не поддерживается для издателей Oracle. | |
logbased |
Статья на основе журнала. | |
logbased manualboth |
Создаваемая на основе журнала статья с фильтрацией вручную и представлением вручную. Для этого параметра также требуется задать sync_object свойства и filter свойства. Не поддерживается для издателей Oracle. |
|
logbased manualfilter |
Создаваемая на основе журнала статья с фильтрацией вручную. Для этого параметра также требуется задать sync_object свойства и filter свойства. Не поддерживается для издателей Oracle. |
|
logbased manualview |
Создаваемая на основе журнала статья с представлением вручную. Для этого параметра также требуется задать sync_object свойство. Не поддерживается для издателей Oracle. |
|
indexed viewlogbased |
Статья индексированного представления, создаваемая на основе журнала. Не поддерживается для издателей Oracle. Для этого типа статьи базовая таблица не должна быть опубликована отдельно. | |
indexed viewlogbased manualboth |
Создаваемая на основе журнала статья индексированного представления с фильтрацией вручную и представлением вручную. Для этого параметра также требуется задать sync_object свойства и filter свойства. Для этого типа статьи базовая таблица не должна быть опубликована отдельно. Не поддерживается для издателей Oracle. |
|
indexed viewlogbased manualfilter |
Создаваемая на основе журнала статья индексированного представления с фильтрацией вручную. Для этого параметра также требуется задать sync_object свойства и filter свойства. Для этого типа статьи базовая таблица не должна быть опубликована отдельно. Не поддерживается для издателей Oracle. |
|
indexed viewlogbased manualview |
Создаваемая на основе журнала статья индексированного представления с представлением вручную. Для этого параметра также требуется задать sync_object свойство. Для этого типа статьи базовая таблица не должна быть опубликована отдельно. Не поддерживается для издателей Oracle. |
|
upd_cmd |
UPDATE оператор для выполнения; в противном случае он создается из журнала. |
|
NULL |
NULL |
Возвращает список свойств статьи, которые могут быть изменены. |
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
Подтверждает, что действие, выполненное этой хранимой процедурой, может сделать недействительным существующий моментальный снимок. @force_invalidate_snapshot бит с значением по умолчанию0
.
0
указывает, что изменения в статье не вызывают недопустимого моментального снимка. Если хранимая процедура определяет, что изменение требует создания нового моментального снимка, возникает ошибка и изменения не выполняются.
1
указывает, что изменения в статье могут привести к недопустимому моментальному снимку, и если существуют существующие подписки, для которых требуется новый моментальный снимок, предоставляет разрешение для того, чтобы существующий моментальный снимок был помечен как устаревший и создан новый моментальный снимок.
См. раздел "Примечания " для свойств, которые при изменении требуют создания нового моментального снимка.
[ @force_reinit_subscription = ] force_reinit_subscription
Подтверждает, что действие, выполняемое данной хранимой процедурой, может сделать необходимой повторную инициализацию существующих подписок. @force_reinit_subscription бит с значением по умолчанию0
.
0
указывает, что изменения в статье не приводят к повторной инициализации подписки. Если хранимая процедура обнаруживает, что изменение требует повторной инициализации существующих подписок, возникает ошибка, и изменения не вносятся.
1
указывает, что изменения в статье приводят к повторной инициализации существующих подписок и предоставляют разрешение на повторную инициализацию подписки.
В разделе "Примечания " описаны свойства, которые при изменении требуют повторной инициализации всех существующих подписок.
[ @publisher = ] N'publisher'
Указывает издатель, отличный от SQL Server. @publisher — sysname с значением по умолчаниюNULL
.
Примечание.
издатель не должен использоваться при изменении свойств статьи на издателе SQL Server.
Значения кода возврата
0
(успешно) или 1
(сбой).
Замечания
sp_changearticle
используется в репликации моментальных снимков и репликации транзакций.
Если статья принадлежит публикации, поддерживающей одноранговую репликацию транзакций, можно изменять description
ins_cmd
upd_cmd
только свойства , а также del_cmd
свойства.
Для изменения любого из следующих свойств требуется создать новый моментальный снимок, и необходимо указать значение 1
параметра @force_invalidate_snapshot :
del_cmd
dest_table
destination_owner
ins_cmd
pre_creation_cmd
schema_options
upd_cmd
Для изменения любого из следующих свойств требуется повторно инициализировать существующие подписки, и необходимо указать значение 1
параметра @force_reinit_subscription .
del_cmd
dest_table
destination_owner
filter
ins_cmd
status
upd_cmd
В существующей публикации можно изменить sp_changearticle
статью без необходимости удалять и повторно создавать всю публикацию.
Примечание.
При изменении значения schema_option
система не выполняет побитовое обновление. Это означает, что при настройке schema_option
использования sp_changearticle
существующие битовые параметры могут быть отключены. Чтобы сохранить существующие параметры, необходимо выполнить | (битовое ИЛИ) между заданным значением и текущим значением schema_option
, которое можно определить путем выполнения sp_helparticle.
Допустимые параметры схемы
В следующей таблице описываются допустимые значения 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 0x8000000 0x400000 0x2000000 0x10000000 0x800000 , 0x20000000 , и 0x40000000 0x80000000 |
0x01 , 0x20 , 0x2000 0x8000000 0x400000 0x2000000 0x10000000 0x800000 , 0x20000000 , и 0x40000000 0x80000000 |
serializable proc exec |
0x01 , 0x20 , 0x2000 0x8000000 0x400000 0x2000000 0x10000000 0x800000 , 0x20000000 , и 0x40000000 0x80000000 |
0x01 , 0x20 , 0x2000 0x8000000 0x400000 0x2000000 0x10000000 0x800000 , 0x20000000 , и 0x40000000 0x80000000 |
proc schema only |
0x01 , 0x20 , 0x2000 0x8000000 0x400000 0x2000000 0x10000000 0x800000 , 0x20000000 , и 0x40000000 0x80000000 |
0x01 , 0x20 , 0x2000 0x8000000 0x400000 0x2000000 0x10000000 0x800000 , 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 0x8000000 0x400000 0x2000000 0x10000000 0x800000 , 0x20000000 , и 0x40000000 0x80000000 |
0x01 , 0x20 , 0x2000 0x8000000 0x400000 0x2000000 0x10000000 0x800000 , 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
необходимо включить значение 0x80
. Поддерживаемые schema_option
значения для публикаций, отличных от SQL Server, : 0x01
, 0x02
, 0x10
, 0x80
0x40
0x1000
и .0x4000
Примеры
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @option AS int;
SET @publication = N'AdvWorksProductTran';
SET @article = N'Product';
SET @option = (SELECT CAST(0x0000000002030073 AS int));
-- Change the schema options to replicate schema with XML.
USE [AdventureWorks2022]
EXEC sp_changearticle
@publication = @publication,
@article = @article,
@property = N'schema_option',
@value = @option,
@force_invalidate_snapshot = 1;
GO
Разрешения
Могут выполняться только члены предопределенных ролей сервера sysadmin или db_owner предопределенных ролей базы данных.sp_changearticle