Управление ограничениями, идентификаторами и триггерами с помощью параметра «NOT FOR REPLICATION»

Изменения: 15 сентября 2007 г.

В некоторых случаях желательно отличать пользовательскую деятельность в топологии репликации от деятельности агентов. Например если строка вставлена пользователем на издателе, и эта вставка удовлетворяет проверочному ограничению в таблице, тогда возможно не потребуется устанавливать то же самое ограничение при вставке строки агентом репликации на подписчике. Параметр NOT FOR REPLICATION позволяет указывать, что при выполнении операции агентом репликации следующие объекты базы данных обрабатываются иначе:

  • Ограничения внешнего ключа
    При выполнении агентом репликации операций вставки обновления или удаления ограничение внешнего ключа не устанавливается.
  • Проверочные ограничения
    При выполнении агентом репликации операций вставки обновления или удаления проверочное ограничение не устанавливается.
  • Столбцы идентификаторов
    При выполнении агентом репликации операции вставки значение столбца идентификаторов не увеличивается.
  • Триггеры
    При выполнении агентом репликации операций вставки обновления или удаления триггер не выполняется.

При публикации таблицы параметры схемы управляют созданием объектов в базе данных подписки. Применяемые по умолчанию параметры схемы зависят от публикации; если параметры заданы, чтобы указать, что ограничения внешнего ключа и проверочные ограничения создаются в базе данных подписки, то задается параметр NOT FOR REPLICATION. Параметр NOT FOR REPLICATION также устанавливается при репликации столбцов идентификаторов в публикациях слиянием и публикациях транзакций, которые поддерживают обновляемые подписки. Дополнительные сведения о репликации столбцов идентификаторов см. в разделе Репликация столбцов идентификаторов.

В большинстве случаев могут использоваться настройки по умолчанию, однако если для приложения требуется другая логика поведения, настройки можно изменить. Основной областью рассмотрения являются триггеры. Например если определить триггер вставки с установленным параметром NOT FOR REPLICATION, то все пользовательские вставки вызывают срабатывание триггера, а вставки агентов репликации не запускают триггер. Рассмотрим триггер, который вставляет данные в таблицу отслеживания: при первоначальной вставке строки пользователем уместно, чтобы триггер включался и вводил строку в отслеживающую таблицу, однако триггер не должен включаться, когда данные реплицируются на подписчик, так как это привело бы к вставке ненужной строки в таблицу отслеживания.

Указание параметра NOT FOR REPLICATION

Параметр NOT FOR REPLICATION можно указывать следующими способами.

См. также

Основные понятия

Аспекты использования репликации всех типов

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

15 сентября 2007 г.

Изменения
  • Приведено разъяснение, когда задается параметр NOT FOR REPLICATION.