04.02.2017, 00:09 | #1 |
Участник
|
слияние глобальных адресов Merge GAB records
AX 2012 R3
коллеги, кто-нибудь сталкивался с проблемой deadlock при попытке одновременного слияния записей в глобальной книге адресов в двух разных сессиях? написал классик, который вызывает стандартную процедуру слияния, но столкнулся с большим количеством deadlocks. снятая SQL трассировка показывает виновником торжества метод sourcePersonRecord.merge(targetPersonRecord); то есть ключевой метод xRecord.merge(). он системный, и непонятно, как с этим бороться. очень хочется запускать несколько независимых процессов, но при таком количестве "мёртвых" единственный выход - это зависимые задачи в одном batch. KB3209851 проблему не решил. то есть, дело явно не в батч-процессинге. попробовал вручную закатить солнце из двух открытых сессий и получил ту же пулю в лоб. как жить?
__________________
Felix nihil admirari |
|
05.02.2017, 10:40 | #2 |
Administrator
|
А по каким именно ресурсам deadlock происходит? Можно deadlock graph посмотреть? (как его записать, написано здесь: https://msdn.microsoft.com/en-us/lib...=sql.120).aspx)
P.S.: Попытаюсь попасть пальцем в небо: попробуйте временно отключить RecId индекс на ContactPerson
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
|
За это сообщение автора поблагодарили: wojzeh (1). |
09.02.2017, 22:23 | #3 |
Участник
|
Цитата:
Сообщение от Maxim Gorbunov
А по каким именно ресурсам deadlock происходит? Можно deadlock graph посмотреть? (как его записать, написано здесь: https://msdn.microsoft.com/en-us/lib...=sql.120).aspx)
не помогло. похоже, какой-то баг внутри этого merge()
__________________
Felix nihil admirari |
|
10.02.2017, 09:44 | #4 |
Участник
|
Недавно я ковырял метод xRecord.merge() используя стандартный класс , не знаю про dedlocks, у меня такого не было, зато очень много бился с duplicate key exception.
Как я вижу, вы тоже пытаетесь объединять субъекты (физиков) в Ax2012, но как я понял, своим собственным классом. Мне кажется надо делать как в DirParyMerge.runOnServer(), т.к. в нем не только merge происходит, но еще и удаление записей. |
|
10.02.2017, 19:16 | #5 |
Участник
|
Цитата:
Сообщение от Dreadlock
Недавно я ковырял метод xRecord.merge() используя стандартный класс , не знаю про dedlocks, у меня такого не было, зато очень много бился с duplicate key exception.
Как я вижу, вы тоже пытаетесь объединять субъекты (физиков) в Ax2012, но как я понял, своим собственным классом. Мне кажется надо делать как в DirParyMerge.runOnServer(), т.к. в нем не только merge происходит, но еще и удаление записей.
__________________
Felix nihil admirari |
|
|
|