Heart-Profit ERP

Heart-Profit Boards => Heart-Profit Releasenotes => Topic started by: Heart Informatisering B.V. on December 09, 2019, 06:45:08 pm



Title: Replikatie Tabel LOKH leidt tot dubbele Auto Increment Values op SQL Server
Post by: Heart Informatisering B.V. on December 09, 2019, 06:45:08 pm
Vandaag is gekonstateerd dat er bij het repliceren van records naar een SQL Server v.w.b. de Tabel LOKH records met dubbele AutoIncrement values konden ontstaan in de SQL Server Database.

Natuurlijk kunnen er (in ADS) nooit records ontstaan met een dubbele Auto-Increment waarde. Op de SQL Server blijkt dit wel op te kunnen treden.

De oorzaak heeft te maken met de wijze waarop gerepliceerd wordt. Zodra een record gemuteerd wordt, leidt dit tot een Transaktie. Die Transaktie heeft een 'Transaktie-Status' die een waarde "TV" kan bevatten, of "WY". TV betreft immer een toevoeging van een record, WY impliceert een wijziging (of een verwijdering) daarop.

Profit kan niet simpelweg op basis van 'zijn er velden gevuld' konstateren of iets een toevoeging of een wijziging betreft; immers, veel toepassingen voegen reeds voor de definitieve verwerking eerst even 'tijdelijk' een sleutel toe, om na F1 alle waarden toe te kennen. Hoewel er dan al tijdelijk een record bestaat, zien we zo'n record niet als 'te repliceren' record, en gebeurt hier niets mee.

Het bepalen of er een record "gewijzigd" wordt, wordt daarmee feitelijk bepaald op basis van het feit of er al attributen zijn gevuld. Zo ja, dan zullen we een bestaand record aan het wijzigen zijn en zo nee, dan zijn we aan het toevoegen.

Bij Tabel LOKH (Defaultwaarden Klient-/Afleveradres + Artikel) gaat deze vlieger niet op. Hoewel deze tabel een stuk of 20 attributen kent, is géén van deze attributen een verplicht  veld (zoals bijv. een Omschrijving bij een Artikel dat wel is). Het resultaat is dat we in staat zijn om alle attributen <leeg> te laten, waarna Profit weliswaar konstateert dat er sleutelvelden gevuld zijn, maar dit niets anders is dat situaties als waarbij in een toevoegfunktie tijdelijk even een sleutel wordt toegevoegd. Voor deze tabel is derhalve nu een uitzondering opgenomen.

Waar dit nu bij LOKH fout gaat, zijn er inmiddels ook andere situaties gekonstateerd waarbij dit fout gaat. De oplossing hiervoor verwachten we morgen gereed te hebben.

FunktieOmschrijvingDtm.Vl.WyzDtm.L.Wyz
SYT         Omschrijving (nog) niet bekend    09-12-2019    09-12-2019