ich ein dotnet applicaton haben, die eine Reihe von Einsatz ausführt, zu aktualisieren, löschen Aussagen in transactionaly WeiseFührt Sql einen impliziten Rollback durch, wenn mein Rollback-Timeout auftritt?
Der Code ist wie dieser
try
{
mytrans = mycon.begintransaction();
//execute sql statements
mytrans.commit();
}
catch(Exception)
{
mytrans.rollback();
}
Das Problem, dass manchmal wir Timeout Ausnahmen in Rollback konfrontiert und ich festgestellt, dass die Datenbankgröße (MDF-Datei) erhöht wurde !!! Also bedeutet es Sql wird nicht implizit Rollback machen? Wenn ja, wie kann ich mich von diesem Fehler erholen und in den ursprünglichen Zustand wechseln ???
Es bedeutet also, dass die Transaktion, die nicht commited ist implizit rollback, oder? falls ja Was ist das Ziel der Rollback-Methode? –
Ja, eine Transaktion, die nicht festgeschrieben ist, wird implizit zurückgesetzt, wenn die DB-Verbindung geschlossen wird (möglicherweise durch ein Timeout). Der Sinn der Rollback-Methode liegt darin, Ihrem Programm die Kontrolle darüber zu geben, da es Situationen geben kann, in denen ein Rollback nicht durch technische Probleme verursacht wird, sondern durch Programmlogik, dh das Programm startet eine Transaktion, macht ein paar Sachen und entscheidet sich dann für ein Rollback die Transaktion und tun Sie etwas anderes stattdessen mit der gleichen DB-Verbindungc. –
Ok, aber meine Logik sagt zuerst Ich verschiebe aktuelle Tabellen zu historical Tabellen und dann einige Verarbeitung während dieser Verschiebung ich konfrontiert primäre Schlüsselverletzung Ausnahme, so dass die Programme versucht Rollback und Timeout Ausnahme aufgetreten ist, nachdem ich festgestellt, dass es redundante Werte gibt in spezifische historische Tabelle !!! das bedeutet, dass der sql nicht zurückgesetzt werden konnte (denke ich) –