Повторное создание пользовательских процедур транзакций для отражения изменений схем
По умолчанию репликация транзакций выполняет изменение всех данных подписчика через хранимые процедуры, сформированные внутренними процедурами для каждой статьи таблицы в публикации. Эти три процедуры (по одной для вставок, обновлений и удалений) копируются на подписчик и выполняются при репликации вставки, обновления или удаления на подписчик. Если изменение схемы вносится в таблицу на издателе SQL Server, репликация автоматически заново формирует эти процедуры, вызывая тот же набор внутренних процедур сценария, чтобы новые процедуры соответствовали новой схеме (репликация изменений схемы не поддерживается для издателей Oracle).
Также можно задать пользовательские процедуры для замены одной или нескольких процедур по умолчанию. Пользовательские процедуры должны изменяться, если на них влияет изменение схемы. Например если процедура ссылается на столбец, удаленный при изменении схемы, то ссылки на этот столбец должны быть удалены из пользовательской процедуры. Имеется два способа, которыми репликация может передавать новую пользовательскую процедуру подписчикам:
Первый — это использовать пользовательскую процедуру сценария для замены процедур репликации.
При выполнении sp_addarticle (Transact-SQL) убедитесь, что параметр @schema_option 0x02 бит равен true.
Выполните Процедура sp_register_custom_scripting (Transact-SQL) и укажите значение 'insert', 'update' или 'delete' для параметра @type, а также имя пользовательской процедуры сценария для параметра @value.
При следующем изменении схемы репликация вызывает эту хранимую процедуру, чтобы создать скрипт определения для новой пользовательской хранимой процедуры, а затем передает ее всем подписчикам.
Второй способ состоит в использовании скрипта, содержащего определение новой пользовательской процедуры:
При выполнении sp_addarticle (Transact-SQL) присвойте параметру @schema_option 0x02 бит значение false, чтобы репликация автоматически не формировала пользовательские процедуры у подписчика.
Перед каждым изменением схемы создайте новый файл скрипта и зарегистрируйте скрипт в репликации, выполнив Процедура sp_register_custom_scripting (Transact-SQL). Укажите значение custom_script для параметра @type и путь к этому скрипту у издателя для параметра @value.
При следующем изменении соответствующей схемы этот скрипт выполняется у каждого подписчика в той же транзакции, что и команда DDL. После завершения изменений схемы регистрация скрипта отменяется. Чтобы этот скрипт выполнялся при последующем изменении схемы, его необходимо повторно зарегистрировать.
См. также
Основные понятия
Указание способа распространения изменений для статей транзакций