Повторное создание транзакционных статей с учетом изменений в схеме
Область применения: SQL Server Управляемый экземпляр SQL Azure
По умолчанию репликация транзакций выполняет изменение всех данных подписчика через хранимые процедуры, сформированные внутренними процедурами для каждой статьи таблицы в публикации. Эти три процедуры (по одной для вставок, обновлений и удалений) копируются на подписчик и выполняются при репликации вставки, обновления или удаления на подписчик. При изменении схемы в таблицу издателя 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. После завершения изменений схемы регистрация скрипта отменяется. Чтобы этот скрипт выполнялся при последующем изменении схемы, его необходимо повторно зарегистрировать.