Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
По умолчанию транзакционная репликация вносит все изменения данных на стороне подписчиков с помощью хранимых процедур, которые создаются внутренними процедурами для каждой статьи таблицы в публикации. Три процедуры (по одной для вставок, обновлений и удалений) копируются к подписчику и выполняются, когда вставка, обновление или удаление реплицируется к подписчику. При изменении схемы в таблицу издателя 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. После завершения изменений схемы регистрация скрипта отменяется. Необходимо повторно зарегистрировать скрипт, чтобы он выполнялся после последующего изменения схемы.
См. также
Указание способа распространения изменений для статей транзакций
Изменение схем на публикационных базах данных