sp_repladdcolumn (Transact-SQL)
Добавляет столбец к существующей статье таблицы, которая была опубликована. Позволяет добавить новый столбец всем издателям, которые публикуют эту статью, или просто добавить столбец к определенной публикации, которая публикует таблицы. Эта хранимая процедура выполняется в базе данных публикации на издателе.
Важно! |
---|
Данная хранимая процедура устарела и поддерживается в основном для обеспечения обратной совместимости. Она должна применяться только с издателями Microsoft SQL Server 2000 и переиздающими подписчиками SQL Server 2000. Эта процедура не должна использоваться в столбцах с типами данных, которые были представлены в SQL Server 2005 или SQL Server 2008. |
Синтаксические обозначения в Transact-SQL
Синтаксис
sp_repladdcolumn [ @source_object = ] 'source_object', [ @column = ] 'column' ]
[ , [ @typetext = ] 'typetext' ]
[ , [ @publication_to_add = ] 'publication_to_add' ]
[ , [ @from_agent = ] from_agent ]
[ , [ @schema_change_script = ] 'schema_change_script' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
Аргументы
[ @source\_object =] 'source_object'
Имя табличной статьи, в которую будет добавлен столбец. Аргумент source_object имеет тип nvarchar(358) и не имеет значения по умолчанию.[ @column =] 'column'
Имя столбца таблицы, добавляемого для репликации. Аргумент column имеет тип sysname и не имеет значения по умолчанию.[ @typetext =] 'typetext'
Определение добавляемого столбца. Аргумент typetext имеет тип nvarchar(3000) и не имеет значения по умолчанию. Например, если добавляется столбец order_filled, являющийся полем из одного символа, не допускающий значения NULL и имеющий значение по умолчанию N, то значением параметра column будет order_filled, а значением аргумента typetext — определение столбца char(1) NOT NULL CONSTRAINT constraint_name DEFAULT 'N'.[ @publication\_to\_add =] 'publication_to_add'
Имя публикации, к которой добавляется новый столбец. Аргумент publication_to_add имеет тип nvarchar(4000) и значение по умолчанию ALL. Если задано значение ALL, столбец добавляется во все публикации, содержащие эту таблицу. Если указан аргумент publication_to_add, столбец добавляется только в эту публикацию.[ @from\_agent = ] from_agent
Выполняется ли хранимая процедура агентом репликации. Аргумент from_agent имеет тип int и значение по умолчанию 0. Значение 1 используется, если эта хранимая процедура выполняется агентом репликации, во всех остальных случаях должно использоваться значение по умолчанию 0.[ @schema\_change\_script =] 'schema_change_script'
Указывает имя и путь к скрипту SQL Server, используемому для изменения пользовательских хранимых процедур, сформированных системой. Аргумент schema_change_script имеет тип nvarchar(4000) и значение по умолчанию NULL. При репликации транзакций допустимо заменять одну или несколько хранимых процедур по умолчанию пользовательскими. Скрипт schema_change_script выполняется после изменения схемы реплицируемой табличной статьи с помощью хранимой процедуры sp_repladdcolumn, его можно использовать для выполнения следующих действий.Если пользовательские хранимые процедуры автоматически восстанавливаются, сценарий schema_change_script может использоваться для удаления этих пользовательских хранимых процедур и замещения их пользовательскими хранимыми процедурами, которые поддерживают новую схему.
Если пользовательские хранимые процедуры не восстанавливаются автоматически, то для их восстановления или создания пользовательских хранимых процедур можно воспользоваться скриптом schema_change_script.
[ @force\_invalidate\_snapshot = ] force_invalidate_snapshot
Определяет возможность недействительности моментального снимка. Аргумент force_invalidate_snapshot имеет тип bit и значение по умолчанию 1.Значение 1 указывает, что изменения в статье могут сделать моментальный снимок недействительным. В этом случае значение 1 дает разрешение на создание нового моментального снимка.
Значение 0 указывает, что изменения статьи не сделают моментальный снимок недействительным.
[ @force\_reinit\_subscription = ] force_reinit_subscription
Включает или отключает возможность повторной инициализации подписки. Аргумент force_reinit_subscription имеет тип bit и значение по умолчанию 0.0 указывает, что изменения в статье не вызывают повторной инициализации подписки.
Значение 1 указывает, что изменения в статье могут привести к необходимости повторной инициализации подписки. В этом случае значение 1 дает разрешение на повторную инициализацию подписки.
Значения кодов возврата
0 (успешное завершение) или 1 (неуспешное завершение)
Замечания
Аргумент sp_repladdcolumn устарел и предоставляется только в целях обратной совместимости. Добавление столбца в реплицированные статьи таблицы необходимо осуществить путем выполнения команд языка определения данных (DDL) над опубликованной таблицей. При репликации эти команды DDL реплицируются автоматически, если была включена репликация DDL. Дополнительные сведения см. в разделе Внесение изменений схем в базы данных публикации.
Хранимая процедура sp_repladdcolumn все еще требуется при передаче изменений DDL с переиздающих подписчиков, имеющих версию SQL Server 2000.
Процедура sp_repladdcolumn используется для всех типов репликации.
При использовании процедуры sp_repladdcolumn изменения схемы статьи, принадлежащей публикации, использующей пакет служб DTS, подписчику не передаются, а пользовательские процедуры для операций вставки, изменения и удаления не формируются на подписчике заново. Пользователю необходимо восстановить этот пакет служб DTS вручную и выполнить соответствующие изменения схемы на подписчиках. Если не применить обновление схемы, то агент распространителя не сможет применить последующие изменения. Перед внесением изменений в схему убедитесь, что нет транзакций, ожидающих доставки.
Если аргументу typetext назначено значение по умолчанию, которое является недетерминированной функцией (например 'datetime not null default getdate()'), добавление столбца может привести к отсутствию конвергенции, так как функция выполняется на подписчике для загрузки значения по умолчанию в столбец.
Отметка времени или вычисляемые столбцы фильтруются для публикаций символьного режима. Если добавление отметки времени или вычисляемого столбца происходит с помощью процедуры sp_repladdcolumn, подписки на такие публикации не получают этот новый столбец.
Важно! |
---|
После выполнения процедуры sp_repladdcolumn необходимо выполнить резервное копирование базы данных публикации. Невыполнение данного резервного копирования может обернуться неудачной попыткой слияния после восстановления базы данных публикации. |
Разрешения
Выполнять процедуру sp_repladdcolumn могут только члены предопределенной роли сервера sysadmin и предопределенной роли базы данных db_owner.
См. также
Справочник
Системные хранимые процедуры (Transact-SQL)