Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описывается, как задать метод распространения для изменений данных в транзакционных статьях в SQL Server 2014 с помощью SQL Server Management Studio или Transact-SQL.
По умолчанию репликация транзакций распространяет изменения на подписчиков с помощью набора хранимых процедур для каждой статьи. Эти процедуры можно заменить пользовательскими процедурами. Дополнительные сведения см. в разделе "Как распространяются изменения для транзакционных статей".
В этом разделе
Перед началом:
Чтобы задать метод распространения для изменений данных в транзакционных статьях, с помощью:
Перед началом работы
Ограничения и условия
- При редактировании файлов моментальных снимков, созданных репликацией, необходимо соблюдать осторожность. Необходимо протестировать и поддерживать пользовательскую логику в пользовательских хранимых процедурах. Корпорация Майкрософт не предоставляет поддержку пользовательской логики.
Использование среды SQL Server Management Studio
Укажите метод распространения на вкладке Свойства в диалоговом окне Свойства статьи - <Статья>, которое доступно в мастере создания публикаций, а также в диалоговом окне Свойства публикации - <Публикация>. Дополнительные сведения об использовании мастера и доступе к этому диалоговому окну см. в статьях Создание публикации и Просмотр и изменение свойств публикации.
Указание метода распространения
На странице статей мастера создания публикации или диалогового окна "Свойства публикации — публикация>" < выберите таблицу и щелкните "Свойства статьи".
Щелкните «Настроить свойства выделенной статьи таблицы».
На вкладке "Свойства" диалогового окна "Свойства статьи<Статья>" в разделе Доставка инструкций укажите метод распространения для каждой операции с помощью меню формата доставки INSERT, формата доставки UPDATE, и формата доставки DELETE".
Нажмите кнопку ОК.
Если вы находитесь в диалоговом окне "Свойства публикации — <публикация> ", нажмите кнопку "ОК ", чтобы сохранить и закрыть диалоговое окно.
Создавать и использовать настраиваемые хранимые процедуры
На странице статей мастера создания публикации или диалогового окна "Свойства публикации — публикация>" < выберите таблицу и щелкните "Свойства статьи".
Щелкните "Задать свойства выделенной статьи таблицы".
На вкладке Свойства диалогового окна "Свойства статьи - <Статья>", в разделе "Параметры доставки", выберите синтаксис CALL из соответствующего меню формата доставки (формат доставки INSERT, формат доставки UPDATE или формат доставки DELETE), а затем введите имя процедуры для использования в хранимой процедуре INSERT, хранимой процедуре DELETE или хранимой процедуре UPDATE. Дополнительные сведения о синтаксисе CALL см. в разделе "Синтаксис вызова для хранимых процедур" в Определение способа распространения изменений для транзакционных статей.
Нажмите кнопку ОК.
Если вы находитесь в диалоговом окне "Свойства публикации — <публикация> ", нажмите кнопку "ОК ", чтобы сохранить и закрыть диалоговое окно.
Когда создается моментальный снимок для публикации, он будет включать процедуру, указанную на предыдущем этапе. Процедуры будут использовать указанный синтаксис CALL, но будет включать логику по умолчанию, используемую репликацией.
После создания моментального снимка перейдите в папку моментальных снимков для публикации, к которой принадлежит эта статья, и найдите файл .sch с тем же именем, что и статья. Откройте этот файл с помощью Блокнота или другого текстового редактора, найдите команду CREATE PROCEDURE для вставки, обновления или удаления хранимых процедур и измените определение процедуры, чтобы предоставить любую пользовательскую логику для распространения изменений данных. При повторном создании моментального снимка необходимо повторно создать пользовательскую процедуру.
Использование Transact-SQL
Репликация транзакций позволяет управлять распространением изменений от издателя к подписчикам, и этот метод распространения можно задать программным способом при создании и изменении статьи позже с помощью хранимых процедур репликации.
Замечание
Можно указать другой метод распространения для каждой операции DML (языка обработки данных) (вставка, обновление или удаление), которая возникает в строке опубликованных данных.
Для получения дополнительной информации см. Указание, как изменения распространяются для транзакционных статей.
Создание статьи, в которой используются команды Transact-SQL для распространения изменений данных
На издателе в базе данных публикации выполните sp_addarticle. Укажите имя публикации, к которой принадлежит статья для @publication, имя статьи для @article, объект базы данных, публикуемый для @source_object, и значение SQL по крайней мере для одного из следующих параметров:
@ins_cmd — управляет репликацией команд INSERT .
@upd_cmd — управляет репликацией команд UPDATE .
@del_cmd — управляет репликацией команд DELETE .
Замечание
При указании значения SQL для любого из указанных выше параметров команды этого типа будут реплицироваться на подписчика как соответствующая команда Transact-SQL.
Дополнительные сведения см. в статье определить статью.
Чтобы создать статью, которая не распространяет изменения данных
На издателе в базе данных публикации выполните sp_addarticle. Укажите название публикации, к которой принадлежит статья, для @publication, название статьи для @article, объект базы данных, который публикуется, для @source_object, и значение NONE по крайней мере для одного из следующих параметров:
@ins_cmd — управляет репликацией команд INSERT .
@upd_cmd — управляет репликацией команд UPDATE .
@del_cmd — управляет репликацией команд DELETE .
Замечание
При указании значения NONE для любого из указанных выше параметров, команды этого типа не будут реплицироваться подписчику.
Дополнительные сведения см. в статье определить статью.
Создание статьи с пользовательскими модифицированными хранимыми процедурами
На сервере издателя в базе данных публикации выполните sp_addarticle. Укажите имя публикации, к которой принадлежит статья для @publication, имя статьи для @article, объект базы данных, публикуемый для @source_object, значение для битовой маски @schema_option, содержащей значение 0x02 (включает автоматическое создание пользовательских хранимых процедур) и по крайней мере один из следующих параметров:
@ins_cmd — укажите значение sp_MSins_ CALL article_name, где article_name — это значение, указанное для @article.
@del_cmd — укажите значение call sp_MSdel_article_name или XCALL sp_MSdel_article_name, где article_name — это значение, указанное для _*@article**.
@upd_cmd — укажите значение SCALL sp_MSupd_article_name, CALL sp_MSupd_article_name, XCALL sp_MSupd__article_name*или MCALL sp_MSupd_article_name, где article_name — это значение, указанное для @article.
Замечание
Для каждого из указанных выше параметров команды можно указать собственное имя хранимых процедур, создаваемых репликацией.
Замечание
Дополнительные сведения о синтаксисе CALL, SCALL, XCALL и MCALL см. в разделе "Определение распространения изменений для транзакционных статей".
Дополнительные сведения см. в статье определить статью.
После создания моментального снимка перейдите в папку моментальных снимков для публикации, к которой принадлежит эта статья, и найдите файл .sch с тем же именем, что и статья. Откройте этот файл с помощью Notepad.exe, найдите команду CREATE PROCEDURE для вставки, обновления или удаления хранимых процедур и измените определение процедуры, чтобы предоставить любую пользовательскую логику распространения изменений данных. Для получения дополнительной информации см. Указание порядка распространения изменений для транзакционных статей.
Создание статьи с пользовательским скриптом в пользовательских хранимых процедурах для распространения изменений данных
На издателе в базе данных публикации выполните sp_addarticle. Укажите имя публикации, к которой принадлежит статья для @publication, имя статьи для @article, объект базы данных, публикуемый для @source_object, значение для битовой маски @schema_option, содержащей значение 0x02 (включает автоматическое создание пользовательских хранимых процедур) и по крайней мере один из следующих параметров:
@ins_cmd — укажите значение sp_MSins_ CALL article_name, где article_name — это значение, указанное для @article.
@del_cmd — укажите значение call sp_MSdel_article_name или XCALL sp_MSdel_article_name, где article_name — это значение, указанное для @article.
@upd_cmd — укажите значение SCALL sp_MSupd_article_name, CALL sp_MSupd_article_name, XCALL sp_MSupd_article_name, MCALL sp_MSupd_article_name, где article_name — это значение, указанное для @article.
Замечание
Для каждого из указанных выше параметров команды можно указать собственное имя хранимых процедур, создаваемых репликацией.
Замечание
Дополнительные сведения о синтаксисе CALL, SCALL, XCALL и MCALL см. в разделе Укажите, как изменения распространяются для транзакционных статей.
Дополнительные сведения см. в статье определить статью.
В базе данных издателя используйте инструкцию ALTER PROCEDURE для изменения sp_scriptpublicationcustomprocs так, чтобы он возвращал скрипт CREATE PROCEDURE для создания, обновления и удаления пользовательских хранимых процедур. Дополнительные сведения см. в разделе "Указание, как изменения распространяются для транзакционных статей".
Изменение метода распространения изменений для существующей статьи
На издателе в базе данных публикации выполните sp_changearticle. Укажите @publication, @article, значение ins_cmd, upd_cmd или del_cmd для @property и соответствующий метод распространения для @value.
Повторите шаг 1 для каждого метода распространения, который необходимо изменить.
См. также
Указание способа распространения изменений для статей транзакций
Создание публикации