|  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 | 
|  | 
|  | 
| 
 |