Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Applies to:
SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL database in Microsoft Fabric Preview
A transaction is a single unit of work. If a transaction is successful, all of the data modifications made during the transaction are committed and become a permanent part of the database. If a transaction encounters errors and must be canceled or rolled back, then all of the data modifications are erased.
SQL Server operates in the following transaction modes:
| Transaction mode | Description |
|---|---|
| Autocommit transactions | Each individual statement is a transaction. |
| Explicit transactions | Each transaction is explicitly started with the BEGIN TRANSACTION statement and explicitly ended with a COMMIT or ROLLBACK statement. |
| Implicit transactions | A new transaction is implicitly started when the prior transaction completes, but each transaction is explicitly completed with a COMMIT or ROLLBACK statement. |
| Batch-scoped transactions | Applicable only to multiple active result sets (MARS), a Transact-SQL explicit or implicit transaction that starts under a MARS session becomes a batch-scoped transaction. A batch-scoped transaction that isn't committed or rolled back when a batch completes is automatically rolled back by SQL Server. |
For special considerations related to data warehouse products, see Transactions in Fabric Data Warehouse or Transactions (Azure Synapse Analytics).
Transaction control syntax
The SQL Database Engine provides the following transaction statements:
- BEGIN DISTRIBUTED TRANSACTION
- ROLLBACK TRANSACTION
- BEGIN TRANSACTION
- ROLLBACK WORK
- COMMIT TRANSACTION
- SAVE TRANSACTION
- COMMIT WORK