[GELĂ–ST]Sperrproblematik unter Nativen Datenbank

Bild Microsoft Dynamics NAV 4.xx
(ehem. Microsoft Business Solutions-Navision)

[GELĂ–ST]Sperrproblematik unter Nativen Datenbank

Beitragvon MSNAVLerner » 17. Mai 2017 08:14

Hey Zusammen,

mittlerweile gehen mir die Ideen aus (auĂźer auf eine SQL Datenbank umzusteigen).

Ich verarbeite vollautomatisch despatch advice.
Häufig kommt es vor, dass nicht angeliefert werden soll, was bestellt wurde.

Oder aber es kommt in unterschiedlichen Teilmengen, bsp:

Bestellt 1000 Stk
Angeliefert werden 600 Stk von Lieferant A und 400 Stk von Lieferant B.

Für solche und noch weitere Fälle (bestellt 1000 Stk., geliefert werden 800 Stk.) passe ich unsere Wareneingangs-Tabelle an.

Nun kommt es doch extrem häufig vor, dass diese scheinbar gesperrt wird (weil ein WE-Mitarbeiter an irgendeinem Datensatz arbeitet) und meine Schnittstelle deswegen die Anpassungen an dem WE nicht vornimmt, überspringt und zum nächsten über geht.

Um dem irgendwie entgegenzuwirken, habe ich beispielsweise im OnPreDataItem vom Verarbeitungs-Report folgendes eingebaut:

g_recWEZeile.RESET;
g_recWEZeile.LOCKTABLE;

Trotzdem wird mein Job häufiger als mir lieb ist von einem WE-Mitarbeiter gesperrt.


Hat jemand eine Idee oder einen Tipp wie man damit am besten umgeht?
Zuletzt geändert von MSNAVLerner am 13. Juni 2017 15:42, insgesamt 1-mal geändert.
MSNAVLerner
 
Beiträge: 145
Registriert: 15. September 2015 16:50
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Sperrproblematik unter Nativen Datenbank

Beitragvon HattrickHorst » 17. Mai 2017 19:59

Wenn ich das richtig im Kopf habe, wird das LOCKTABLE je nach Einstellung u.U. erst zu einem späteren Zeitpunkt wirklich ausgeführt. Daher bringt es an der Stelle vielleicht gar nichts.

Ist es denn zwingend notwendig den Wareneingang im laufenden Betrieb einzufügen oder könnte man nicht auch sammeln und bspw. am Abend alles auf einmal übernehmen?

Benutzt der automatische Prozess den gleichen Buch.-Blatt Namen wie die MA? Könnte man das ggf. umstellen?
HattrickHorst
 
Beiträge: 585
Registriert: 15. Januar 2009 19:32
Wohnort: Bochum
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.00C - heute

Re: Sperrproblematik unter Nativen Datenbank

Beitragvon MSNAVLerner » 18. Mai 2017 07:43

Ja da fĂĽhrt kein Weg dran vorbei, dass ich den Wareneingang umgehend nach Erhalt der DesAdv direkt anpasse.

Meine Schnittstelle geht bei Abweichungen von Bestellung und Wareneingang in die jeweilige Wareneingangszeilen und löscht dort Zeilen, legt neue an oder modifiziert bestehende Zeilen.
MSNAVLerner
 
Beiträge: 145
Registriert: 15. September 2015 16:50
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Sperrproblematik unter Nativen Datenbank

Beitragvon m_schneider » 18. Mai 2017 08:43

Hast du auch folgendes versucht:

Code: Alles auswählen
g_recWEZeile.LOCKTABLE(TRUE);

Quelle
MfG Michael
Benutzeravatar
m_schneider
 
Beiträge: 2146
Registriert: 20. Januar 2009 14:36
Realer Name: Michael Schneider
Arbeitsort: Treuen
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2017

Re: Sperrproblematik unter Nativen Datenbank

Beitragvon Kowa » 18. Mai 2017 09:18

HattrickHorst hat geschrieben:Wenn ich das richtig im Kopf habe, wird das LOCKTABLE je nach Einstellung u.U. erst zu einem späteren Zeitpunkt wirklich ausgeführt.

Das trifft nur beim SQL-Server zu.
Locking in Microsoft SQL Server
How to detect locking order for a NAV process
Beim Native Server hat es dagegen sofort Auswirkung, siehe Diagramm hier:
Table Locking
GruĂź, Kai

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, Messenger oder Telefon! DafĂĽr ist dieses Forum da.

Download: Dynamics NAV Object Text Explorer (Alternativlink). MVP Alumni
Benutzeravatar
Kowa
Moderator
Moderator
 
Beiträge: 7851
Registriert: 17. Juni 2005 17:32
Wohnort: Bremen
Realer Name: Kai Kowalewski
Arbeitsort: Osterholz-Scharmbeck
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC, NAV 2018 bis Navision 2.01

Re: Sperrproblematik unter Nativen Datenbank

Beitragvon jglathe » 18. Mai 2017 09:47

Hallo,

Klingt nach einer Zwischentabelle, die Du fĂĽr die Ă„nderungen erstmal verwendest. Wenn die Wareneingangszeilen nicht berĂĽhrt werden kannst Du dann auch problemlos committen. Und dann mittels Job Queue (oder wenn man es sich traut, auf dem OnInsert/OnModify Trigger des Wareneingangsforms) die Verarbeitung in Bezug auf die Wareneingangszeilen anschieben. Wobei ich mich frage, wenn die Lieferung dann ggf. von einem anderen Lieferanten kommt, ist das schon eine Aktion - gesonderte Teilbestellung?

LG Jens
jglathe
 
Beiträge: 496
Registriert: 5. Mai 2006 08:20
Wohnort: Falkensee
Realer Name: Jens Glathe
Arbeitsort: Berlin
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: blau..2018

Re: Sperrproblematik unter Nativen Datenbank

Beitragvon MSNAVLerner » 18. Mai 2017 10:59

Ich schreibe direkt in eine eigens entwickelte Wareneingastabelle (Kopf- und Zeile).

Das mit den unterschiedlichen Lieferanten liegt daran, dass wir bei großen Zwischenhändler bestellen.
Da bestellst 1000 Stk. und der schickt dir dann beispielsweise 500 Stk. mit Lot-Nr. 1234 von Lieferant A und 500 Stk. mit Lot-Nr. 84730 von Lieferant B.

Aus diesem Grund splitte ich sowohl in der Bestellung als auch im Wareneingangsdialog die Zeile.

Das Interessante ist jedoch, dass es beim Bestellzeilen-Splitting nie zu Problemen kommt.
Ich versuche jetzt zu ermitteln, ob der Fehler ggfs. auch noch wo anders liegt und nicht "nur" an Sperrung der Tabelle.

LG
MSNAVLerner
 
Beiträge: 145
Registriert: 15. September 2015 16:50
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Sperrproblematik unter Nativen Datenbank

Beitragvon Kowa » 18. Mai 2017 11:15

m_schneider hat geschrieben:Hast du auch folgendes versucht:
Code: Alles auswählen
g_recWEZeile.LOCKTABLE(TRUE);

LOCKTABLE ohne Parameter verwendet bereits die Vorgabewerte LOCKTABLE(TRUE,FALSE). Beim SQL-Server ist das auch die einzige zulässige Einstellung, die dort dann nicht zu Laufzeitfehlern führt.
GruĂź, Kai

Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, Messenger oder Telefon! DafĂĽr ist dieses Forum da.

Download: Dynamics NAV Object Text Explorer (Alternativlink). MVP Alumni
Benutzeravatar
Kowa
Moderator
Moderator
 
Beiträge: 7851
Registriert: 17. Juni 2005 17:32
Wohnort: Bremen
Realer Name: Kai Kowalewski
Arbeitsort: Osterholz-Scharmbeck
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC, NAV 2018 bis Navision 2.01

Re: Sperrproblematik unter Nativen Datenbank

Beitragvon Raik Zobel » 18. Mai 2017 15:39

Du kannst die Wahrscheinlichkeit das es zu einem Lock kommt verringern, wenn du alle Änderungen in einer temporären Tabelle machst und ganz am Ende in die echte Tabelle schreibst. (Für den Fall, dass viele WE Zeilen in bestimmten Intervallen verarbeitet werden.)

An welcher Stelle setzt denn deine Programmierung an? Vielleicht macht es Sinn, die zu bearbeitenden WE Zeilen vorm User zu verstecken. Am besten so, das der User diese gar nicht erst zu Gesicht bekommt, bevor nicht deine Programmierung drüber gegangen ist. Das kann ja ein Booleanfeld sein, welches du nach deiner Bearbeitung änderst.
Benutzeravatar
Raik Zobel
 
Beiträge: 279
Registriert: 4. März 2013 13:43
Realer Name: Raik Zobel
Arbeitsort: Leipzig
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 4.00SP3, 2013R2, 2016

Re: Sperrproblematik unter Nativen Datenbank

Beitragvon MSNAVLerner » 19. Mai 2017 07:56

Meine Anwender arbeiten nicht an den WE´s, die von meiner Schnittstelle überarbeitet werden.
Sie arbeiten an anderen WE´s und dadurch besteht scheinbar die Gefahr, dass meine Schnittstelle gesperrt wird.

Vermutlich bleibt nichts anderes ĂĽbrig, als ĂĽber Timing.
Die Uhrzeiten fĂĽr die Schnittstelle sind definiert.
MSNAVLerner
 
Beiträge: 145
Registriert: 15. September 2015 16:50
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Sperrproblematik unter Nativen Datenbank

Beitragvon HattrickHorst » 20. Mai 2017 13:53

Kowa hat geschrieben:Das trifft nur beim SQL-Server zu.

Ah... gepflegt ĂĽberlesen. :oops:
MSNAVLerner hat geschrieben:(auĂźer auf eine SQL Datenbank umzusteigen)
HattrickHorst
 
Beiträge: 585
Registriert: 15. Januar 2009 19:32
Wohnort: Bochum
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.00C - heute


ZurĂĽck zu NAV 4.xx

Wer ist online?

Mitglieder in diesem Forum: Unbekannter Crawler, Unbekannter Robot, Yandex [Bot] und 1 Gast