sp_changearticle (Transact-SQL)

Применимо к:SQL Server Управляемый экземпляр SQL Azure

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

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

Синтаксис

  
sp_changearticle [ [@publication= ] 'publication' ]  
    [ , [ @article= ] 'article' ]  
    [ , [ @property= ] 'property' ]  
    [ , [ @value= ] 'value' ]  
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]  
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]  
    [ , [ @publisher = ] 'publisher' ]  

Аргументы

[ @publication = ] 'publication' Имя публикации, содержащей статью. публикацияsysname с значением NULL по умолчанию.

[ @article = ] 'article' Имя статьи, свойство которой необходимо изменить. статьяsysname с значением NULL по умолчанию.

[ @property = ] 'property' Свойство статьи для изменения. свойство nvarchar (100).

[ @value = ] 'value' Является новым значением свойства статьи. значение равно nvarchar(255).

Эта таблица описывает свойства статей и значения этих свойств.

Свойство Значения Description
creation_script Путь и имя скрипта схемы статьи, используемого для создания целевых таблиц. По умолчанию имеет значение NULL.
del_cmd Инструкция DELETE к выполнению; иначе формируется из журнала.
описание Новая запись описания статьи.
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 Не использует команду.
Падение Удаляет целевую таблицу полностью.
Удаление Удаляет целевую таблицу.
truncate Усекает целевую таблицу.
pub_identity_range Управляет размером диапазонов идентификаторов, назначенных на подписчике. В случае одноранговой репликации не поддерживается.
schema_option Указывает битовую карту параметра формирования схемы для данной статьи. schema_option является binary(8). Дополнительные сведения см. в подразделе «Примечания» далее в этом разделе.
0x00 Отключает выполнение сценариев агентом моментальных снимков.
0x01 Формирует создание объекта (CREATE TABLE, CREATE PROCEDURE и т.п.).
0x02 Создает хранимые процедуры, которые распространяют изменения в статье, если они заданы.
0x04 Столбцы идентификаторов вносятся в сценарий с помощью свойства IDENTITY.
0x08 Репликация столбцов метки времени. Если не задано, столбцы метки времени реплика в виде двоичного файла.
0x10 Создает соответствующий кластеризованный индекс.
0x20 Преобразует определяемые пользователем типы данных (UDT) в базовые типы данных подписчика. Этот параметр не может использоваться, если на столбец UDT наложено ограничение CHECK или DEFAULT, если столбец UDT является частью первичного ключа или если вычисляемый столбец ссылается на столбец 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 Используйте этот параметр, чтобы реплика te атрибут 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 Проводит репликацию параметра сжатия для данных и индексов. Дополнительные сведения см. в разделе Data Compression.
0x800000000 Задайте этот параметр для сохранения данных атрибута FILESTREAM в его файловой группе на подписчике. Если этот параметр не задан, данные атрибута FILESTREAM сохраняются в файловой группе по умолчанию. Репликация не создает файловые группы, поэтому, если этот параметр задан, необходимо создать файловую группу до применения моментального снимка на подписчике. Дополнительные сведения о создании объектов перед применением моментального снимка см. в разделе "Выполнение скриптов до и после применения моментального снимка".

См. связанные параметры 0x100000000.
0x1000000000 Преобразует определяемые пользователем типы среды CLR (UDTs) размером более 8000 байт в varbinary(max), чтобы столбцы типа UDT можно реплика подписчикам, работающим под управлением SQL Server 2005 (9.x).
0x2000000000 Преобразует тип данных hierarchyid в varbinary(max), чтобы столбцы иерархии типов можно реплика для подписчиков, работающих под управлением SQL Server 2005 (9.x). Дополнительные сведения об использовании столбцов hierarchyid в реплика таблицах см. в разделе hierarchyid (Transact-SQL).
0x4000000000 Проводит репликацию всех фильтруемых индексов для таблицы. Дополнительные сведения о отфильтрованных индексах см. в разделе "Создание отфильтрованных индексов".
0x8000000000 Преобразует типы данных geography и geometry в varbinary(max), чтобы столбцы этих типов можно реплика для подписчиков, работающих под управлением SQL Server 2005 (9.x).
0x10000000000 Реплицирует индексы по столбцам типа geography и geometry.
0x20000000000 Производит репликацию атрибута SPARSE для столбцов. Дополнительные сведения об этом атрибуте см. в разделе "Использование разреженных столбцов".
0x40000000000 Включите скрипты агентом моментальных снимков для создания оптимизированной для памяти таблицы на подписчике.
0x80000000000 Преобразует кластеризованный индекс в некластеризованный индекс для статей, оптимизированных для памяти.
состояние Устанавливает новое состояние свойства.
горизонтальные секции dts Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
включить имена столбцов Имена столбцов включаются в реплицируемую инструкцию INSERT.
без имен столбцов Имена столбцов не включаются в реплицируемую инструкцию INSERT.
нет горизонтальных секций dts Горизонтальная секция статьи не задается трансформируемой подпиской.
none Очищает все параметры состояния в таблице sysarticles и помечает статью как неактивную.
parameters Изменения передаются подписчику при помощи параметризированных команд. Это значение по умолчанию для новой статьи.
строковые литералы Изменения передаются подписчику при помощи значений строковых литералов.
sync_object Имя таблицы или представления, которые используются для создания выходного файла синхронизации. По умолчанию имеет значение NULL. Не поддерживается для издателей Oracle.
Табличное пространство Определяет табличное пространство, используемое таблицей, выполняющей протоколирование, для статьи, опубликованной с базы данных Oracle. Дополнительные сведения см. в статье Управление табличными пространствами Oracle.
threshold Процентное значение, определяющее, когда агентом распространителя выделяется новый диапазон идентификаторов. В случае одноранговой репликации не поддерживается.
type Не поддерживается для издателей Oracle.
logbased Статья на основе журнала.
logbased manualboth Создаваемая на основе журнала статья с фильтрацией вручную и представлением вручную. Для этого параметра также требуется задать свойства sync_object и фильтра . Не поддерживается для издателей Oracle.
logbased manualfilter Создаваемая на основе журнала статья с фильтрацией вручную. Для этого параметра также требуется задать свойства sync_object и фильтра . Не поддерживается для издателей Oracle.
logbased manualview Создаваемая на основе журнала статья с представлением вручную. Для этого параметра также требуется задать свойство sync_object . Не поддерживается для издателей Oracle.
indexed viewlogbased Статья индексированного представления, создаваемая на основе журнала. Не поддерживается для издателей Oracle. Для этого типа статьи нет необходимости отдельно публиковать базовую таблицу.
indexed viewlogbased manualboth Создаваемая на основе журнала статья индексированного представления с фильтрацией вручную и представлением вручную. Для этого параметра также требуется задать свойства sync_object и фильтра . Для этого типа статьи нет необходимости отдельно публиковать базовую таблицу. Не поддерживается для издателей Oracle.
индексированный viewlogbased manualfilter Создаваемая на основе журнала статья индексированного представления с фильтрацией вручную. Для этого параметра также требуется задать свойства sync_object и фильтра . Для этого типа статьи нет необходимости отдельно публиковать базовую таблицу. Не поддерживается для издателей Oracle.
индексированное представление в базе вручную Создаваемая на основе журнала статья индексированного представления с представлением вручную. Для этого параметра также требуется задать свойство 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 = ] 'publisher' Указывает издатель, отличный от SQL Server. publisher имеет имя sysname с значением NULL по умолчанию.

Примечание.

издатель не должен использоваться при изменении свойств статьи на издателе SQL Server.

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

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

Замечания

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

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

  • состояние

  • upd_cmd

В существующей публикации можно использовать sp_changearticle для изменения статьи без необходимости удалять и повторно создавать всю публикацию.

Примечание.

При изменении значения schema_option система не выполняет побитовое обновление. Это означает, что при настройке schema_option с помощью sp_changearticle существующие параметры бита могут быть отключены. Чтобы сохранить существующие параметры, необходимо выполнить | (битовое ИЛИ) между заданным значением и текущим значением schema_option, которое можно определить путем выполнения sp_helparticle.

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

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

Тип статьи Тип репликации — Транзакционный Тип репликации — моментальный снимок
logbased Все параметры Все параметры, но 0x02
logbased manualfilter Все параметры Все параметры, но 0x02
logbased manualview Все параметры Все параметры, но 0x02
индексированное представление logbased Все параметры Все параметры, но 0x02
индексированное представление logbased manualfilter Все параметры Все параметры, но 0x02
Индексированное представление logbased manualview Все параметры Все параметры, но 0x02
Индексированные представления 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 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 и 0x80000000 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 и 0x80000000
Просмотр только схемы 0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 и 0x80000000 0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 и 0x80000000
Только схема func 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 и 0x80000000 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 и 0x80000000
Только индексированные схемы представления 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, 0x40, 0x80, 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.

См. также

View and Modify Article Properties (Просмотр и изменение свойств статьи)
Изменение свойств публикации и статьи
sp_addarticle (Transact-SQL)
sp_articlecolumn (Transact-SQL)
sp_droparticle (Transact-SQL)
sp_helparticle (Transact-SQL)
sp_helparticlecolumns (Transact-SQL)