Auch wenn Du nur mit einem PC arbeitest, hast Du mit der Client-Applikation und dem Dienst praktisch eine Mehrbenutzerumgebung. Da greifen alle Gefahren bei der PrimaryKey (PK)- Ermittlung.
Wenn also Dein Dienst seine Transaktion nach dem Insert noch nicht beendet hat, wird die Applikation in dieser Zeit per
SQL-Max() einen PK- Wert bekommen, der aber bereits vom Dienst verbraucht wurde. Das ist ein typisches Deathlock- Szenario, das man häufig nur durch Dienst-Neustart (und Datenverlust!) lösen kann.
Und weil ich so schön am Erklären bin: Genau die Transaktionen sind auch der Grund, weshalb gerade beim Import (also Mengen- Inserts) ein
FB- Server in die Knie gezwungen werden kann. Hier macht ein erfahrener Programmierer nach einer Anzahl von Inserts (z.B 100 oder 1000) ein "Commit work;" und passt auf, das keine Transaktion länger dauert als nötig (Stichwort OAT - oldest active transaction).
Viel Erfolg.
--
Andreas