![]() |
#1 |
Участник
|
слияние глобальных адресов Merge GAB records
AX 2012 R3
коллеги, кто-нибудь сталкивался с проблемой deadlock при попытке одновременного слияния записей в глобальной книге адресов в двух разных сессиях? написал классик, который вызывает стандартную процедуру слияния, но столкнулся с большим количеством deadlocks. снятая SQL трассировка показывает виновником торжества метод sourcePersonRecord.merge(targetPersonRecord); то есть ключевой метод xRecord.merge(). он системный, и непонятно, как с этим бороться. очень хочется запускать несколько независимых процессов, но при таком количестве "мёртвых" единственный выход - это зависимые задачи в одном batch. KB3209851 проблему не решил. то есть, дело явно не в батч-процессинге. попробовал вручную закатить солнце из двух открытых сессий и получил ту же пулю в лоб. как жить?
__________________
Felix nihil admirari |
|
![]() |
#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). |
![]() |
#3 |
Участник
|
Цитата:
Сообщение от Maxim Gorbunov
![]() А по каким именно ресурсам deadlock происходит? Можно deadlock graph посмотреть? (как его записать, написано здесь: https://msdn.microsoft.com/en-us/lib...=sql.120).aspx)
не помогло. похоже, какой-то баг внутри этого merge()
__________________
Felix nihil admirari |
|
![]() |
#4 |
Участник
|
Недавно я ковырял метод xRecord.merge() используя стандартный класс , не знаю про dedlocks, у меня такого не было, зато очень много бился с duplicate key exception.
Как я вижу, вы тоже пытаетесь объединять субъекты (физиков) в Ax2012, но как я понял, своим собственным классом. Мне кажется надо делать как в DirParyMerge.runOnServer(), т.к. в нем не только merge происходит, но еще и удаление записей. |
|
![]() |
#5 |
Участник
|
Цитата:
Сообщение от Dreadlock
![]() Недавно я ковырял метод xRecord.merge() используя стандартный класс , не знаю про dedlocks, у меня такого не было, зато очень много бился с duplicate key exception.
Как я вижу, вы тоже пытаетесь объединять субъекты (физиков) в Ax2012, но как я понял, своим собственным классом. Мне кажется надо делать как в DirParyMerge.runOnServer(), т.к. в нем не только merge происходит, но еще и удаление записей.
__________________
Felix nihil admirari |
|
|
|