Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Обнаружение конфликтов в репликации отдноранговых транзакций  [new]
Finder
Member

Откуда:
Сообщений: 320
При включенном режиме обнаружения конфликтов MSSQL добавляет в процедуры синхронизации код по обработке конфликтов - а также очень полезная запись конфликтующих записей в conflict_dbo_tablename.
Но если на подписке "Continue replication after conflict detection"=false, запись в таблицу конфликтов не производится (увы, это подтвердили тесты не говоря о мелкософтовской документации [url=]http://msdn.microsoft.com/ru-ru/library/ms151865[/url]).

MSDN
В одноранговых репликациях агент распространителя при обнаружении конфликта завершается с ошибкой.
Эта ошибка заносится в журнал, но данные конфликта не записываются в таблицу конфликтов и поэтому недоступны для
просмотра.Если агенту распространителя разрешается продолжить работу, конфликт заносится в локальный журнал на
каждом узле.


Получается, что конфликт обнаруживается ДО вызова ХП синхронизации (в противном случае конфликтующие записи попали бы в таблицу конфликтов). И пока мы не дадим команду разрешить конфликт автоматом ('p2p_continue_onconflict'=true) - мы не увидим причину конфликта, даже не узнаем где именно он произошел. Не поможет в этом случае и "View conflicts" в студии.

В логе агента дистрибуции при этом можно прочитать крайне малоинформативное сообщение:
2012-06-01 06:29:34.062 
42000 A conflict of type 'Update-Update' was detected at peer 1 between peer 2 (incoming), transaction id 0x0000000000000983  
and peer 1 (on disk), transaction id 0x00000000000008a9 22815
2012-06-01 06:29:34.062 
42000 A conflict of type 'Update-Update' was detected at peer 1 between peer 2 (incoming), transaction id 0x0000000000000984  
and peer 1 (on disk), transaction id 0x00000000000008aa 22815


Собственно, вопрос:
можно ли получать при репликации одноранговых транзакций подробную инфорацию о конфликтующих записях если требуется чтобы агент не продолжал работу после обнаружения конфликта (ждал вмешательства пользователя)? Иначе 'p2p_continue_onconflict'=false по умолчанию просто не имеет смысла, т.к. допускается только автоматическое разрешение конфликта...
1 июн 12, 11:25    [12649428]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить