Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Merge replication и изменения данных / 15 сообщений из 15, страница 1 из 1
12.09.2002, 19:55:11
    #32050264
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Merge replication и изменения данных
Упрощенное описание проблемы:

Чтобы проверить в триггере, изменялась ли колонка, достаточно запросить if update (col_name). На основе этой информации формируем запись в некий лог в своем формате. Все чудесно. Теперь тоже, но с репликацией - когда на одном сервере меняем запись ( только одно поле ), то на нем в лог аккуратно падает изменение в одном поле. Когда изменения доползают до других серверов и на них срабатывают такие же триггера, то они выдают, что пришли изменения на все поля . Merge replication.

1) Почему так?
2) Как с этим бороться? :-))
...
Рейтинг: 0 / 0
13.09.2002, 10:15:25
    #32050332
Tulkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Merge replication и изменения данных
1.Потому что SQL не хранит информацию о о том, КАКИЕ ПОЛЯ изменены.Он хранит информацию КАКИЕ ЗАПИСИ изменены.
2.Бороться наверное так:
В триггера добваить что-то вроде
if sessionproperty('replication_agent') <> 1
Begin
Текст триггера
End

Таким образом на мерж-агент триггера реагировать не будут, а таблицу с логом реплицировать отдельно.
...
Рейтинг: 0 / 0
13.09.2002, 10:23:47
    #32050342
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Merge replication и изменения данных
Не пойдет - мне нужно отслеживать изменения в любом случае. Флажок этот я и так выставляю в своем логе :-)
...
Рейтинг: 0 / 0
13.09.2002, 10:36:57
    #32050351
Tulkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Merge replication и изменения данных
А когда синхронизируется апдэйт таблицы, имеющей поле Timestamp, у тебя добавляется в лог одна запись или две?
...
Рейтинг: 0 / 0
13.09.2002, 11:47:15
    #32050379
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Merge replication и изменения данных
С timestamp'ом тоже самое - в триггере if update(...) выдает true для всех полей. Кроме самого timestamp'а.
...
Рейтинг: 0 / 0
13.09.2002, 12:23:35
    #32050389
Tulkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Merge replication и изменения данных
У меня если апдэйтится табличка с timestamp,после синхронизации в табличку с логом кидается 2 записи, причем, одна-со старыми значениями всех полей,вторая-с новыми.Такое впечатление, что мерж-агент сначала отдельно апдэйтит timestamp, а потом, вторым апдэйтом-все остальное.
...
Рейтинг: 0 / 0
13.09.2002, 12:53:21
    #32050400
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Merge replication и изменения данных
Все остальное - это все поля, кроме timestamp'а? Или же только те, что реально участвовали в update'е?
...
Рейтинг: 0 / 0
13.09.2002, 14:59:55
    #32050440
Tulkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Merge replication и изменения данных
Я не утверждаю, что апдэйт проходит на все поля, т.к. не проверял. У меня триггер реагирует на деятельность мерж-агента, и тупо кидает в другую таблицу содержимое инсертед и делетед.
...
Рейтинг: 0 / 0
13.09.2002, 15:15:04
    #32050447
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Merge replication и изменения данных
Блин!

Посмотрите на мое первое сообщение, плз :-) Меня интересует именно то, что обновления на репл. партнерах приходят для всех полей , а не для одного , как на том сервере, где происходили изменения.
...
Рейтинг: 0 / 0
13.09.2002, 16:23:35
    #32050487
Tulkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Merge replication и изменения данных
Посмотри на МОЕ первое сообщение, плз . Исходя из того, КАК и ЧТО хранится в MSMERGE_CONTENTS я предполагаю(а точнее утверждаю с 90% уверенностью), что мерж-агент действительно апдэйтит ВСЕ поля. А последующий мой вопрос был просто дальнейшим развитием беседы.
...
Рейтинг: 0 / 0
13.09.2002, 16:33:22
    #32050492
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Merge replication и изменения данных
Ясно. Меня интересовало именно то, какие поля меняются. Сам факт и то, какие записи менялись, отловить проблем не составляет.

В любом случае спасибо за участие!
...
Рейтинг: 0 / 0
13.09.2002, 18:59:08
    #32050522
Tulkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Merge replication и изменения данных
Если сильно приспичило, поковыряйся в процедурах типа sp_upd_A23733705B954A4127B390A57F794816. Для апдэйта мерж агенит вызывает их.
...
Рейтинг: 0 / 0
14.09.2002, 07:55:07
    #32050564
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Merge replication и изменения данных
Если я ничего не путаю, то при настройке репликации есть галочка, которая указывает как считать изменения по столбцам или по строкам.
BOL под рукой нет и сервера тоже, так что вполне возможно, что несу чушь и указанные свойства можно проставить только для резолвера.

З.Ы. Кстати, обратил внимание, что в 2000-м значительно гибче можно настраивать репликацию.
...
Рейтинг: 0 / 0
14.09.2002, 20:11:13
    #32050586
Дед Маздай
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Merge replication и изменения данных
Да, эта галочка соот-т п-ру @column_tracking в sp_addmergearticle. По умолч. он установлен в false, что означает ситуацию конфликта даже если в одной записи апдейтились разные поля. Возникает гипотеза, что механизм отсл-я конфликтов всегда работает на уровне отд.полей, и конфликт уровня записи достигается выставлением флажков обновления во всех ее полях, что Вы и пронаблюдали. Не факт, что гипотеза верна, но проверить оч.просто - поставить @column_tracking = true.
...
Рейтинг: 0 / 0
16.09.2002, 09:59:30
    #32050632
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Merge replication и изменения данных
Да у меня скриптами вся репликация настраивается, так что проверить легко - @column_tracking = true.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Merge replication и изменения данных / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]