sql >> Databasteknik >  >> RDS >> Sqlserver

Vad är fördelen med att använda SET XACT_ABORT ON i en lagrad procedur?

SET XACT_ABORT ON instruerar SQL Server att återställa hela transaktionen och avbryta batchen när ett körtidsfel uppstår. Den täcker dig i fall som en kommandotimeout som inträffar på klientapplikationen snarare än inom SQL Server själv (som inte täcks av standarden XACT_ABORT OFF inställning.)

Eftersom en tidsgräns för en fråga lämnar transaktionen öppen, SET XACT_ABORT ON rekommenderas i alla lagrade procedurer med explicita transaktioner (såvida du inte har en specifik anledning att göra annat) eftersom konsekvenserna av att en applikation utför arbete på en anslutning till en öppen transaktion är katastrofala.

Det finns en riktigt bra översikt på Dan Guzmans blogg,



  1. Hur väljer man kolumner från en tabell som har icke-nullvärden?

  2. Få exekveringstid för PostgreSQL-fråga

  3. De använda SELECT-satserna har ett annat antal kolumner (REDUX!!)

  4. MySQL primära nycklar