sp_changearticle (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'
Имя публикации, которая содержит статью. Аргумент publication имеет тип sysname и значение по умолчанию NULL.[ @article=] 'article'
Имя статьи, свойства которой будут изменены. Аргумент article имеет тип sysname и значение по умолчанию NULL.[ @property=] 'property'
Свойство статьи, которое будет изменено. Аргумент property имеет тип nvarchar(100).[ @value=] 'value'
Новое значение свойства статьи. Аргумент value имеет тип nvarchar(255).Эта таблица описывает свойства статей и значения этих свойств.
Свойство
Значения
Описание
creation_script
Путь и имя сценария схемы статьи, используемого для создания целевых таблиц. Значением по умолчанию является NULL.
del_cmd
Инструкция DELETE к выполнению; иначе формируется из журнала.
description
Новая запись описания статьи.
dest_object
Добавлено для обратной совместимости. Использовать dest_table.
dest_table
Новая целевая таблица.
destination_owner
Имя владельца целевого объекта.
фильтр
Новая хранимая процедура для фильтрации таблицы (горизонтальная фильтрация). Значением по умолчанию является NULL. Невозможно изменить для публикаций в одноранговой репликации.
fire_triggers_on_snapshot
true
Реплицированные пользовательские триггеры срабатывают при применении исходного моментального снимка.
ПримечаниеЧтобы триггеры были реплицированы, битовая маска schema_option должна содержать значение 0x100.false
Реплицированные пользовательские триггеры не срабатывают при применении исходного моментального снимка.
identity_range
Управляет размером диапазонов идентификаторов, назначенных на подписчике. В случае одноранговой репликации не поддерживается.
ins_cmd
Инструкция INSERT к выполнению; иначе формируется из журнала.
pre_creation_cmd
Команда предсоздания, которая перед применением синхронизации может полностью или частично удалить данные из целевой таблицы или выполнить ее усечение.
нет
Не использует команду.
drop
Удаляет целевую таблицу полностью.
delete
Удаляет целевую таблицу.
truncate
Усекает целевую таблицу.
pub_identity_range
Управляет размером диапазонов идентификаторов, назначенных на подписчике. В случае одноранговой репликации не поддерживается.
schema_option
Указывает битовую карту параметра формирования схемы для данной статьи. Аргумент schema_option имеет тип binary(8). Дополнительные сведения см. в подразделе «Примечания» далее в этом разделе.
0x00
Отключает выполнение сценариев агентом моментальных снимков.
0x01
Формирует создание объекта (CREATE TABLE, CREATE PROCEDURE и т.п.).
0x02
Создает хранимые процедуры, которые распространяют изменения в статье, если они заданы.
0x04
Столбцы идентификаторов вносятся в сценарий с помощью свойства IDENTITY.
0x08
Реплицирует столбцы timestamp. Если не задано, столбцы timestamp реплицируются как binary.
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 в типы данных, которые поддерживаются на 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, имеющие размер больше 8 000 байт, в тип данных 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 для столбцов. Дополнительные сведения об этом атрибуте см. в разделе Использование разреженных столбцов.
status
Устанавливает новое состояние свойства.
dts horizontal partitions
Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
include column names
Имена столбцов включаются в реплицируемую инструкцию INSERT.
no column names
Имена столбцов не включаются в реплицируемую инструкцию INSERT.
no dts horizontal partitions
Горизонтальная секция статьи не задается трансформируемой подпиской.
нет
Очищает все параметры состояния в таблице 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 имеет тип bit и значение по умолчанию 0.Значение 0 указывает, что изменения статьи не сделают моментальный снимок недействительным. Если хранимая процедура определяет, что изменение требует создания нового моментального снимка, то возникает ошибка, и изменение не выполняется.
Значение 1 указывает, что изменения статьи могут сделать моментальный снимок недействительным, и если существует подписка, которая может потребовать создания нового моментального снимка, дает разрешение на пометку существующего моментального снимка как устаревшего и на создание нового моментального снимка.
Свойства, которые при изменении потребуют создания нового моментального снимка, см. в разделе «Примечания».
[ **@force_reinit_subscription=]**force_reinit_subscription
Подтверждает, что действие, выполняемое данной хранимой процедурой, может сделать необходимой повторную инициализацию текущих подписок. Аргумент force_reinit_subscription имеет тип bit и значение по умолчанию 0.0 указывает, что изменения в статье не вызывают повторной инициализации подписки. Если хранимая процедура определяет, что изменения потребуют повторной инициализации подписок, возникает ошибка, и изменения не выполняются.
1 указывает, что изменения в статье вызывают повторную инициализацию подписок, и дает разрешение произвести повторную инициализацию.
Свойства, которые при изменении потребуют повторной инициализации всех текущих подписок, см. в разделе «Примечания».
[ @publisher= ] 'publisher'
Задает издатель, отличный от SQL Server. Аргумент publisher имеет тип sysname и значение по умолчанию NULL.Примечание Аргумент publisher не должен использоваться при изменении свойств статьи на издателе 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
фильтр
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, 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 |
Примечание |
---|
Для публикаций, обновляемых посредством очередей, значение 0x80 аргумента schema_option должно быть включено. Публикации, отличные от публикаций SQL Server, поддерживают следующие значения аргумента schema_option: 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 [AdventureWorks2008R2]
EXEC sp_changearticle
@publication = @publication,
@article = @article,
@property = N'schema_option',
@value = @option,
@force_invalidate_snapshot = 1;
GO
Разрешения
Только члены предопределенной роли сервера sysadmin или предопределенной роли базы данных db_owner могут выполнять sp_changearticle.
См. также