事务 (Transact-SQL)
事务是单个工作单元。 如果某一事务成功,则在该事务中进行的所有数据修改均会提交,成为数据库中的永久组成部分。 如果事务遇到错误且必须取消或回滚,则所有数据修改均被清除。
SQL Server 以下列事务模式运行:
自动提交事务
每条单独的语句都是一个事务。
显式事务
每个事务均以 BEGIN TRANSACTION 语句显式开始,以 COMMIT 或 ROLLBACK 语句显式结束。
隐式事务
在前一个事务完成时新事务隐式启动,但每个事务仍以 COMMIT 或 ROLLBACK 语句显式完成。
批处理级事务
只能应用于多个活动结果集 (MARS),在 MARS 会话中启动的 Transact-SQL 显式或隐式事务变为批处理级事务。 当批处理完成时没有提交或回滚的批处理级事务自动由 SQL Server 进行回滚。
1.显示事务
显示事务需要显示地定义事务的启动和结束。
它是通过 BEGIN TRANSACTION 、 COMMIT TRANSACTION 、ROLLBACKTRANSACTION 、 SAVE TRANSACTION 等Transact-SQL语句来完成的。
启动事务: BEGIN TRANSACTION 。
结束事务: COMMIT TRANSACTION
代码示例:
在事务内设置保存点: SAVE TRANSACTION 。保存点是如果有条件的取消事务的一部分,事务可以返回的位置。例如:
不能用于事务的操作:
操作 |
相应的SQL语句 |
创建数据库 |
CREATE DATABASE |
修改数据库 |
ALTER DATABASE |
删除数据库 |
DROP DATABASE |
恢复数据库 |
RESTORE DATABASE |
加载数据库 |
LOAD DATABASE |
备份日志文件 |
BACKUP LOG |
恢复日志文件 |
RESTORE LOG |
更新统计数据 |
UPDATE STATISTICS |
授权操作 |
GRANT |
复制事务日志 |
DUMP TRANSACTION |
磁盘初始化 |
DISK INIT |