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)
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделе:Отправить и просмотреть отзыв по