最新消息:ww12345678 的部落格重装上线,希望大家继续支持。

[转]Microsoft Dynamics AX 由编号序列导致的死锁

Uncategorized William 2439浏览 0评论

原文地址:http://axdaily.blogspot.com/2010/04/deadlocks-with-number-sequences.html

Number sequence cannot be set up and used in the same transaction. If you’ll try to do so you’ll face a deadlock. This happens because of the fact that AX uses separate connection to get next number from a number sequence.

For example, the following code will cause deadlock:

public static void  testNumberSequences()
{
	NumberSequenceTable  numberSequenceTable;
	NumberSequenceReference  numberSequenceReference;

	ttsbegin;
	numberSequenceTable.NumberSequence  = 'A';
	numberSequenceTable.Lowest = 1;
	numberSequenceTable.Highest  = 99999;
	numberSequenceTable.NextRec =  1;
	numberSequenceTable.Format =  '#####';
	numberSequenceTable.Continuous =  NoYes::No;
	numberSequenceTable.insert();

	numberSequenceReference.DataTypeId  =  typeId2ExtendedTypeId(typeid(ItemGroupId));
	numberSequenceReference.NumberSequence  =  numberSequenceTable.NumberSequence;
	numberSequenceReference.insert();

	NumberSeq::newGetNum(NumberSeqReference::findReference(
					typeId2ExtendedTypeId(typeid(ItemGroupId))))
						.num();
	ttscommit;
}

By moving the line with num() call out of tts scope the deadlock will be eliminated.

转载请注明:ww12345678 的部落格 | AX Helper » [转]Microsoft Dynamics AX 由编号序列导致的死锁

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址