Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Muss ich wirklich SET XACT_ABORT ON verwenden?

Denken Sie daran, dass es Fehler gibt, die TRY-CATCH mit oder ohne XACT_ABORT nicht erfasst .

Jedoch SET XACT_ABORT ON wirkt sich nicht auf das Abfangen von Fehlern aus. Es garantiert jedoch, dass jede Transaktion zurückgesetzt / zum Scheitern verurteilt ist. Wenn "OFF", haben Sie immer noch die Wahl zwischen Commit oder Rollback (abhängig von xact_state). Dies ist die wichtigste Verhaltensänderung für SQL 2005 für XACT_ABORT

Was es auch tut, ist das Entfernen von Sperren usw., wenn das Client-Befehls-Timeout eintritt und der Client die "Abbruch"-Direktive sendet. Ohne SET XACT_ABORT , können Sperren bestehen bleiben, wenn die Verbindung offen bleibt. Mein Kollege (ein MVP) und ich haben das Anfang des Jahres ausgiebig getestet.