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

Браузер не поддерживается

Чтобы использовать веб-сайт, обновите браузер.

Обновите браузер до последней версии Internet Explorer

Инструкции 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
Отзывы и предложения
" + (window.location.protocol) + "//c.microsoft.com/ms.js'><\/script>");