Как указать метод распространения изменений данных в статьях публикации транзакций (программирование репликации на языке Transact-SQL)
По умолчанию при репликации транзакций используется набор хранимых процедур для распространения изменений на подписчики. Репликация транзакций позволяет управлять процессом распространения изменений от издателя к подписчику. Метод распространения может быть задан программным путем при создании и последующем изменении статей с помощью хранимых процедур репликации.
![]() |
---|
Разным операциям DML (вставка, обновление или удаление), выполняемым над строками опубликованных данных, могут быть назначены различные методы распространения. |
Дополнительные сведения см. в разделе Указание способа распространения изменений для статей транзакций.
Создание статьи, использующей команды Transact-SQL для распространения изменений данных
Выполните процедуру sp_addarticle на издателе в базе данных публикации. В параметре @publication задайте имя публикации, которой принадлежит статья, в параметре @article — имя статьи, в параметре @source_object — базу данных, на которой опубликован объект, а для одного из следующих параметров задайте значение SQL.
@ins_cmd — управляет репликацией команд INSERT.
@upd_cmd — управляет репликацией команд UPDATE.
@del_cmd — управляет репликацией команд DELETE.
Примечание
При указании значения SQL для одного из перечисленных выше параметров репликация этого типа на подписчик будет производиться соответствующими командами Transact-SQL.
Дополнительные сведения см. в разделе Как определить статью (программирование репликации на языке Transact-SQL).
Создание статьи, не распространяющей изменения данных
Выполните процедуру sp_addarticle на издателе в базе данных публикации. В параметре @publication укажите имя публикации, которой принадлежит статья, в параметре @article — имя статьи, в параметре @source_object — базу данных, на которой опубликован объект, а для одного из следующих параметров задайте значение NONE.
@ins_cmd — управляет репликацией команд INSERT.
@upd_cmd — управляет репликацией команд UPDATE.
@del_cmd — управляет репликацией команд DELETE.
Примечание
При указании значения NONE для одного из перечисленных выше параметров репликация команд указанного на подписчик производиться не будет.
Дополнительные сведения см. в разделе Как определить статью (программирование репликации на языке Transact-SQL).
Создание статьи с изменяемыми пользовательскими хранимыми процедурами
Выполните процедуру sp_addarticle на издателе в базе данных публикации. В параметре @publication задайте имя публикации, которой принадлежит статья, в параметре @article — имя статьи, в параметре @source_object — базу данных, на которой опубликован объект, а в параметре @schema_option задайте битовую маску, содержащую значение 0x02 (для включения автоматического режима создания пользовательской хранимой процедуры), и хотя бы один из следующих параметров.
@ins_cmd — укажите значение CALL sp_MSins_имя_статьи, где имя_статьи — значение, заданное в параметре @article.
@del_cmd — укажите значение CALL sp_MSdel_имя_статьи или XCALL sp_MSdel_имя_статьи, где имя_статьи — значение, заданное в параметре @article.
@upd_cmd — укажите значение SCALL sp_MSupd_имя_статьи, CALL sp_MSupd_имя_статьи, XCALL sp_MSupd_имя_статьи или MCALL sp_MSupd_имя_статьи, где имя_статьи — значение, заданное в параметре @article.
Примечание
Для каждой из приведенных выше команд в качестве параметров можно указать собственное имя хранимых процедур, создаваемых репликацией.
Примечание
Дополнительные сведения о синтаксисе команд CALL, SCALL, XCALL и MCALL см. в разделе Указание способа распространения изменений для статей транзакций.
Дополнительные сведения см. в разделе Как определить статью (программирование репликации на языке Transact-SQL).
После создания моментального снимка перейдите в папку моментальных снимков, относящуюся к публикации, которой принадлежит данная статья, затем найдите файл с расширением .sch и с таким же именем, что и статья. Откройте этот файл в блокноте, найдите инструкцию CREATE PROCEDURE для хранимой процедуры вставки, обновления или удаления и измените ее определение, задав пользовательскую логику распространения изменений данных. Дополнительные сведения см. в разделе Указание способа распространения изменений для статей транзакций.
Внимание!
Необходимо соблюдать осторожность при изменении любого файла моментального снимка, созданного репликацией. Необходимо тестировать и поддерживать пользовательскую логику в пользовательских хранимых процедурах; корпорация Майкрософт не поддерживает пользовательскую логику.
Создание статьи, использующей пользовательские сценарии в пользовательских хранимых процедурах для распространения изменений данных
Выполните процедуру sp_addarticle на издателе в базе данных публикации. В параметре @publication задайте имя публикации, которой принадлежит статья, в параметре @article — имя статьи, в параметре @source_object — базу данных, на которой опубликован объект, а в параметре @schema_option задайте битовую маску, содержащую значение 0x02 (для включения автоматического режима создания пользовательской хранимой процедуры), и хотя бы один из следующих параметров.
@ins_cmd — укажите значение CALL sp_MSins_имя_статьи, где имя_статьи — значение, заданное в параметре @article.
@del_cmd — укажите значение CALL sp_MSdel_имя_статьи или XCALL sp_MSdel_имя_статьи, где имя_статьи — значение, заданное в параметре @article.
@upd_cmd — задайте значения параметров SCALL sp_MSupd_имя_статьи, CALL sp_MSupd_имя_статьи, XCALL sp_MSupd_имя_статьи или MCALL sp_MSupd_имя_статьи, где имя_статьи значение параметра @article.
Примечание
Для каждой из приведенных выше команд в качестве параметров можно указать собственное имя хранимых процедур, создаваемых репликацией.
Примечание
Дополнительные сведения о синтаксисе команд CALL, SCALL, XCALL и MCALL см. в разделе Указание способа распространения изменений для статей транзакций.
Дополнительные сведения см. в разделе Как определить статью (программирование репликации на языке Transact-SQL).
В базе данных публикации на издателе при помощи инструкции ALTER PROCEDURE измените хранимую процедуру sp_scriptpublicationcustomprocs таким образом, чтобы она возвращала сценарий CREATE PROCEDURE пользовательских хранимых процедур для вставки, обновления и удаления. Дополнительные сведения см. в разделе Указание способа распространения изменений для статей транзакций.
Внимание!
Изменение хранимой процедуры sp_scriptpublicationcustomprocs должно выполняться очень осторожно. Содержащаяся в ней пользовательская логика должна быть тщательно выверена. Корпорация Майкрософт не обеспечивает поддержку ни пользовательской логики, ни изменения системных хранимых процедур.
Изменение метода распространения изменений для существующей статьи
Выполните процедуру sp_changearticle на издателе в базе данных публикации. Задайте значения параметров @publication и @article, укажите в параметре @property значение ins_cmd, upd_cmd или del_cmd, а в параметре @value — необходимый метод распространения.
Повторите шаг 1 для каждого изменяемого метода распространения.