Ich habe eine gespeicherte Prozedur, die eine BEGIN TRANSACTION
y COMMIT TRANSACTION
Erklärung. Innerhalb der Transaktion ist eine select-Abfrage WITH(XLOCK, ROWLOCK)
.
Die Transaktion kann möglicherweise aufgrund einiger Berechnungen fehlschlagen, die einen arithmetischen Überlauffehler verursachen, wenn Werte außerhalb des zulässigen Bereichs geliefert werden. Dieser Fehler würde vor jeder Einfüge-/Aktualisierungsanweisung auftreten.
Meine Frage ist, sollte ich die Transaktion in ein TRY/CATCH und Rollback verpacken oder ist dies nicht wirklich erforderlich und alle Sperren würden automatisch freigegeben werden, wenn die Transaktion fehlschlägt? Meine einzige Sorge dabei ist, dass SQL nicht alle Sperren der Transaktion freigeben würde, wenn die Transaktion fehlschlägt.
Danke,
Tom