Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - select schneller als insert, was ist da los
E_L_M - Fr 31.05.13 12:23
Titel: select schneller als insert, was ist da los
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 - 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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!