В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету

Инструкции UPDATE могут быть реплицированы как вставки или удаления пары

ВНИМАНИЕ! Данная статья переведена с использованием программного обеспечения Майкрософт для машинного перевода и, возможно, отредактирована посредством технологии Community Translation Framework (CTF). Корпорация Майкрософт предлагает вам статьи, обработанные средствами машинного перевода, отредактированные членами сообщества Майкрософт и переведенные профессиональными переводчиками, чтобы вы могли ознакомиться со всеми статьями нашей базы знаний на нескольких языках. Статьи, переведенные с использованием средств машинного перевода и отредактированные сообществом, могут содержать смысловое, синтаксические и (или) грамматические ошибки. Корпорация Майкрософт не несет ответственности за любые неточности, ошибки или ущерб, вызванные неправильным переводом контента или его использованием нашими клиентами. Подробнее об CTF можно узнать по адресу http://support.microsoft.com/gp/machine-translation-corrections/ru.

Эта статья на английском языке: 238254
Аннотация
При обновлении любого столбца, который является частью уникального ограничения, то SQL Server реализует обновление как «отложенное обновление», что означает, как Удалитьпару / операциивставки . Это «отложенное обновление» приводит репликации для отправки пары Удалить/ инструкцииINSERT для подписчиков. Также существуют другие ситуации, которые могут вызвать отложенного обновления. Таким образом, любой бизнес-логики, реализовать в триггеры UPDATE или пользовательские хранимые процедуры на подписчике должны также быть включены в Удалить/ пользовательские хранимые процедуры или триггерывставки .
Дополнительная информация
По умолчанию репликация транзакций является использование вставки, обновления и удаления пользовательских хранимых процедур для применения изменений на подписчиках.

Подписчикам через вызов Вставить хранимые процедуры применяются инструкции INSERT , выполненных на издателе. Аналогичным образом инструкция DELETE применяется через вызов Удаление хранимой процедуры.

Тем не менее, если инструкция UPDATE выполняется как "отложенного обновления", помещается агент чтения журнала в паре Удалить/ вызываетДОБАВЛЕНИЕ хранимой процедуры в базе данных распространителя, применяемое для подписчиков, а не для обновления вызова хранимой процедуры. Например предположим, что имеется таблица публикаций, с именем TABLE1, и эти три столбца:
  • col1 int
  • столбец Col2 int
  • Col3 varchar(30).
Определен только уникальности для таблицы TABLE1 col1 через ограничение первичного ключа. Предположим, что есть одна запись (1,1, "Даллас").

При выполнении этого кода:
UPDATE TABLE1 set col1 = 3 where col2 = 'Dallas'				
Инструкция UPDATE реализуется SQL Server как Удалитьпару / инструкцииINSERT с момента обновления col1, который был определен уникальный индекс. Таким образом, чтения журнала помещает пару УдалитьиВставить вызов в базе данных распространителя. Это может повлиять на любой бизнес-логики, который присутствует в триггера или пользовательской хранимой процедуры на подписчике. Следует включить дополнительную бизнес-логику в удаления и вставки триггера или хранимой процедуры для обработки этой ситуации.

Если вы предпочитаете использовать один логики и требуется, чтобы все команды обновления реплицируются как Удалить/Добавить пары можно включить флаг трассировки, как описано в статье базы знаний Майкрософт:
160181 INF: Флаг трассировки для обновления, вставки или удаления пары репликации
Кроме того Если в публикации используется горизонтальный фильтр и обновленная строка не удовлетворяет условию фильтра, только Удалить вызов процедуры отправляется подписчикам. Обновленная строка ранее не соответствует условию фильтра, условие после обновления только Вставить вызов процедуры отправляется через процесс репликации.

В предыдущем примере предположим, что также горизонтальный фильтр, определенные для таблицы TABLE1: где col2 = «Даллас». Если выполнить этот код:
UPDATE table1 set col2 = 'New York' where col1 = 3				
агент чтения журнала только звонит Удаление хранимой процедуры по применять подписчикам, поскольку обновленная строка не соответствует критериям горизонтальный фильтр.

Теперь, если выполнить этот код:
UPDATE table1 set col2 = 'Dallas' where col1 = 3				
чтения журнала создает только Вставить хранимые процедуры вызова, так как строки не соответствует ранее в условие фильтра.

Несмотря на то, что операция обновления была выполнена на издателе, соответствующие команды применяются к подписчику.
Ссылки
Пакет обновления 1 для SQL Server 2000 или более поздней версии обратитесь к следующей статье Microsoft Knowledge Base:
302341 INF: Новый флаг трассировки для обеспечения обновления Singleton для репликации транзакций

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 238254 — последний просмотр: 08/17/2013 15:29:00 — редакция: 3.0

Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 7.0 Standard Edition, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition

  • kbinfo kbmt KB238254 KbMtru
Отзывы и предложения