Autor Beitrag
E_L_M
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Fr 31.05.13 12:23 
Hallo,

ich habe folgendes Problem, welches zwar nur sporadisch auftritt, aber trotzdem für unsere Kunden sehr unschön werden kann.

In unserer Software (C#) wird ein neuer Datensatz eingetragen und gespeichert (über MS SQL Server 2008 - mittels einer INSERT-Prozedur auf der Datenbank). Die Tabelle hat noch einen Trigger, der aber nur bei DELETE oder UPDATE feuert. Die INSERT-Prozedur gibt die id des neuen Datensatzes zurück. Mit dieser ID wird dann eine SELECT-Prozedur aufgerufen.

Leider kommt es in gelegentlich nach dem Speichern eines neuen Datensatzes vor, dass der SQL-Server eine unerwartete Ausnahme liefert. Die Fehlermeldung in der Software lautet: "An der Postition 0 befindet sich keine Zeile." Also der SELECT mit der neuen Id liefert zu dem Zeitpunkt kein Ergebnis. Der neue Datensatz ist aber da, sonst hätte ich ja keine neue Id zurück bekommen.

Woran liegt das? Die Tabelle hat nicht einmal 10 Spalten. Kenn hier jemand im Forum diesen Effekt und was könnte ich dagegen tun?

Vielen Dank für die Hilfe!

ELM
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 31.05.13 12:52 
Finden der Insert und der nachfolgende Select in der gleichen Transaktion statt? Wenn nicht ist die Transaktion mit dem Insert überhaupt schon commited? Welches Isolation Level wird verwendet. Hast du schon versucht per SQL Profiler den Ablauf (Statements, TRansaktion, Locks) nachzuvollziehen?

Ein wenig Code könnte uns helfen dir zu helfen.