Как указать метод распространения изменений данных в статьях публикации транзакций (программирование репликации на языке 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).

Создание статьи с изменяемыми пользовательскими хранимыми процедурами

  1. Выполните процедуру 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).

  2. После создания моментального снимка перейдите в папку моментальных снимков, относящуюся к публикации, которой принадлежит данная статья, затем найдите файл с расширением .sch и с таким же именем, что и статья. Откройте этот файл в блокноте, найдите инструкцию CREATE PROCEDURE для хранимой процедуры вставки, обновления или удаления и измените ее определение, задав пользовательскую логику распространения изменений данных. Дополнительные сведения см. в разделе Указание способа распространения изменений для статей транзакций.

    ПредупреждениеВнимание!

    Необходимо соблюдать осторожность при изменении любого файла моментального снимка, созданного репликацией. Необходимо тестировать и поддерживать пользовательскую логику в пользовательских хранимых процедурах; корпорация Майкрософт не поддерживает пользовательскую логику.

Создание статьи, использующей пользовательские сценарии в пользовательских хранимых процедурах для распространения изменений данных

  1. Выполните процедуру 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).

  2. В базе данных публикации на издателе при помощи инструкции ALTER PROCEDURE измените хранимую процедуру sp_scriptpublicationcustomprocs таким образом, чтобы она возвращала сценарий CREATE PROCEDURE пользовательских хранимых процедур для вставки, обновления и удаления. Дополнительные сведения см. в разделе Указание способа распространения изменений для статей транзакций.

    ПредупреждениеВнимание!

    Изменение хранимой процедуры sp_scriptpublicationcustomprocs должно выполняться очень осторожно. Содержащаяся в ней пользовательская логика должна быть тщательно выверена. Корпорация Майкрософт не обеспечивает поддержку ни пользовательской логики, ни изменения системных хранимых процедур.

Изменение метода распространения изменений для существующей статьи

  1. Выполните процедуру sp_changearticle на издателе в базе данных публикации. Задайте значения параметров **@publication** и **@article**, укажите в параметре **@property** значение ins_cmd, upd_cmd или del_cmd, а в параметре **@value** — необходимый метод распространения.

  2. Повторите шаг 1 для каждого изменяемого метода распространения.