首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL Server 事务使用

前言 在做项目的过程,有时同一个操作会同时对数据库两张表进行操作,比如在机房收费系统,下机需要把下机记录更新到下机表,同时又要更新卡表余额,如果在操作数据库过程中出现错误,只对其中某一张表进行了操作...性质 原子性(Atomic):事务包含操作被看做一个逻辑单元,这个逻辑单元操作要么全部成功,要么全部失败。...语法 BEGIN TRAN:开始事务,设置事务起始点。 COMMIT TRAN:提交事务,使事务成为数据库永久、不可逆转部分。...ROLLBACK TRAN:回滚事务,放弃事务对数据库所做修改。 SAVE TRAN:设置事务保存点。...; END 事务可以设置在程序代码,也可以写在数据库脚本,下面是一个事务和存储过程结合使用例子 ALTER PROCEDURE [dbo].

95610
您找到你想要的搜索结果了吗?
是的
没有找到

SQL Server 事务隔离级别

脏读:读到了其他事务已修改但未提交数据 不可重复读:由于其他事务修改,导致同一事务两次查询读到数据不同( 幻读:由于其他事务修改,导致同一事务两次查询读到记录数不同(读时候不能写) 可能有人对幻读和不可重复读定义不太理解...三、ANSI/ISO标准定义了下列事务隔离级别,SQL Server数据库引擎支持全部这4种隔离级别: ?...四、除以上4种隔离级别外SQL Server还支持使用行版本控制其他两个事务隔离级别: 一个是默认read committed隔离级别下snapshot实现,严格来说并不算一个事务隔离级别,只是...3.已提交读快照 SQL Server特有的隔离级别,主要是为了匹配Oracle提交读实现功能,在此隔离级别下,select只会对表加一个Sch-S锁,因此select不会引发在阻塞,但是会加大tempdb...Ps:关于Mvcc机制实现方式参考https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/snapshot-isolation-in-sql-server

1.2K20

SQL SERVER事务处理

事务定义: 事务是单个工作单元。如果某一事务成功,则在该事务中进行所有数据更改均会 提交,成为数据库永久组成部分。如果事务遇到错误且必须取消或回滚,则所有 数据更改均被清除。...中间有错误,如果SET XACT_ABORT=false,则出错部分回滚,其他部分提交,当然外部Procedure 也提交。)....') commit TRANSACTION A 隐性事务 当连接以隐性事务模式进行操作时,SQL Server将在提交或回滚当前事务后自动启动新事务。...在第一个事务提交或回滚之后,下次当连接执行这些语句 任何语句时,SQL Server 都将自动启动一个新事务。...该选项是SQL Server 默认值。 避免脏读,并在其他session 在事务不能对已有数据进行修改。共享锁。

1.8K20

sql server 事务处理

事物处理 事务SQL Server单个逻辑单元,一个事务所有SQL语句作为一个整体执行,要么全部执行,要么都不执行。...事务分类 按事务启动和执行方式,可将事务分为3类: 1.显示事务:显式地定义启动和结束事务。 2.自动提交事务:自动提交模式是SQL Server默认事务管理模式。...3.隐性事务:当连接以隐性事务模式进行操作时,SQL Server将在提交或回滚当前事务后自动启动新事务。无须描述事务开始,只须提交或回滚每个事务。隐性事务模式形成连续事务链。...当提交或回滚显式事务或者关闭隐性事务模式时,SQL Server将返回到自动提交模式。...在第一个事务提交或回滚之后,下次当连接执行这些语句任何语句时,SQL Server都将自动启动一个新事务

2.3K80

git 提交文件部分修改

概述 在 Git 提交一个文件时候,有时候会在同一个文件,包含两个不同功能修改,或者一个功能完成了,而别的部分还没有完善不应该进入代码库,这时候如果使用git add file-name的话,会将这个文件所有更新都提交...针对这种场景,git 提供了更细粒度提交命令git add -p,可以分部分提交一个文件更新代码块,实测能满足常见需求。这里简要记录一下如何使用这个命令。 2....实现命令 2.1 原理解释 git 中用”hunk”来表示一个文件邻近区域中代码修改块,比如用git diff 查看修改时,两个@@符号分割一个区域就是一个hunk,其中行首是-,颜色为红色为删去行...部分提交文件修改原理简单来说是将所有的修改分成不同hunk,通过对每个hunk来进行是否提交判断,从而完成我们需求。具体命令下面详细讲述。...,按会车会显示help信息: 图片 所有命令含义如下: y - 将当前hunk进行提交 n - 不提交当前hunk q - 退出交互式界面,不提交当前hunk以及后面的所有hunk a - 提交当前

27920

SQL Server】创建与使用事务

事务特性 原子性:事务是一个完整操作,事务各步操作时不可分,要么都执行,要么都不执行。 一致性:当事务完成时,数据必须处于一致状态。...事务分类 显式事务 用BEGIN TRANSACTION明确指定事务开始。...最常用事务类型 隐式事务 通过设置SETIMPLICIT_TRANSACTIONS ON 语句,将隐性事务模式设置为打开。 其后T-SQL语句自动启动一个新事务。...提交或回滚一个事务后,下一个T-SQL语句又将启动一个新事务。 自动提交事务 SQL Server默认方式。 每条单独SQL语句被视为一条事务。...如何使用事务 开始事务 BEGIN TRANSACTION 提交事务 COMMIT TRANSACTION 回滚事务 ROLLBACK TRANSACTION 一旦事务提交或回滚,则事务结束 事务示例

9700

SQL ServerGUID

GUID 主要用于在拥有多个节点、多台计算机网络或系统,分配必须具有唯一性标识符。...1、在 SQL Server 中使用 GUID 如果在 SQL Server 表定义中将列类型指定为 uniqueidentifier,则列值就为 GUID 类型。...SQL Server NewID() 函数可以产生 GUID 唯一值,使用此函数几种方式如下: 1) 作为列默认值 将 uniqueidentifier 默认值设为 NewID(),这样当新行插入表时...2)使用 T-SQL 在 T-SQL 中使用 NewID()函数,如“INSERT INTO Table(ID,… ) VALUES(NewID(),…)”来生成此列 GUID 值。...而 Guid 计算全部 16 个字节,这种差异可能会给 SQL Server uniqueidentifier 列排序带来一定影响,当然这种排序意义也不大。

4.6K20

SQL Server事务日志初学者指南

什么是事务日志? 事务日志是每个SQL Server数据库文件组成部分。它包含在SQL Server数据库中日志记录过程中生成日志记录。...截断过程是必要,以标记所有不活跃部分,以便它们可以再次使用和覆盖 如果所有以下内容都是正确,则事务日志不再需要日志记录。...它所包含事务已经提交 它更改数据库页面都是由检查点写入磁盘 备份不需要日志记录(完整、差异或日志) 对于读取日志(例如数据库镜像或复制)[1]任何特性,都不需要日志记录 逻辑日志是事务日志活动部分...日志序列号(LSN)标识事务日志每个事务。MinLSN是在线事务日志中最老活动事务起始点。 SQL Server数据库可以在没有事务日志情况下工作吗?...在完全恢复事务日志增长可能性最大,因为所有事务都被记录 如何在SQL Server维护事务日志? 事务日志维护是SQL Server管理重要任务。

1.3K30

MS SQL Server事务与并发知多少

一旦破坏了数据完整性,SQL Server 会回滚这个事务来确保数据库数据是一致。   ...在极端断电或者系统崩溃情况下,一个发生在事务提交之前,数据库应该记录了这个事务"ID"和部分已经在数据库上更新数据。供电恢复数据库重新启动之后,这时完成全部撤销和回滚操作。...换句话说,SQL Server默认在执行完每个语句之后就自动提交事务。...事务已经提交上一个版本存在tempdb数据库,这是SQL Server引入一个新功能。   ...,却下载不了这本书配套源代码和示例数据库,特意上传到了百度云盘,点此下载 (2)BIWORK,《SQL Server 事务事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生过程和原因

2.2K11

SQL Server 死锁检测

SQL Server 2012 (11.x) 开始,xml_deadlock_report应使用扩展事件 (xEvent),而不是 SQL 跟踪或 SQL 事件探查器死锁图事件类。...同样从 SQL Server 2012 (11.x) 开始,当发生死锁时,system_health会话已捕获xml_deadlock_report包含死锁图所有 xEvent。...由应用程序重新提交,因为它们在死锁时被回滚。为了帮助最大限度地减少死锁:以相同顺序访问对象。避免交易用户交互。- 保持交易简短并集中进行。使用较低隔离级别。...使用基于行版本控制隔离级别。将数据库选项设置READ_COMMITTED_SNAPSHOT为启用以启用读提交事务以使用行版本控制。...当READ_COMMITTED_SNAPSHOT数据库选项设置为 ON 时,在读已提交隔离级别下运行事务在读操作期间使用行版本控制而不是共享锁。

16610

SQL Server 2012事务日志截断、回绕与收缩

每个 SQL Server 数据库都具有事务日志,用于记录所有事务以及每个事务对数据库所做修改。 必须定期截断事务日志以避免它被填满。 但是,一些因素可能延迟日志截断,因此监视日志大小很重要。...删除或移动事务日志以前,必须完全了解此操作带来后果。 事务日志支持以下操作: ? 恢复个别的事务。 ? 在 SQL Server 启动时恢复所有未完成事务。 ?...日志截断可从 SQL Server 数据库逻辑事务日志删除不活动虚拟日志文件,释放逻辑日志空间以便物理事务日志重用这些空间。...例如:在使用DPM备份SQL server时候,如果进行完整备份,则不会截断日志,但是如果使用完整+事物日志备份方式就可以截断事物日志。 ?...而逻辑日志只是事务日志部分

4.2K60

浅谈 SQL Server 查询优化与事务处理

什么是索引呢,索引是 SQL Server 编排数据内部方法,他为 SQL Server 提供了一种方法来编排查询数据路由,从而达到通过使用索引来提高数据库检索速度、改善数据库性能。...SQL Server 提供各类系统存储过程一类。...: 一个完整存储过程包括 输入参数和输出参数 在存储过程执行T-SQL语句 存储过程返回值 用SSMS创建存储过程 一个完整存储过程包括以下三部分: 1、输入和输出参数 2、在存储过程执行...开始事务(指定事务从此开始,后续T-SQL语句是一个整体) declare @errorsum int --定义变量,用于累计事务执行过程错误 set @errorsum=0 --初始化为...else begin print '交易成功,提交事务,写入硬盘,永久保存' commit transaction end go select customername,currentmoney

1.9K50

SQL Server简单学习

当一个事务需要访问资源加了其所不兼容锁,SQL Server会阻塞当前事务来达成所谓隔离性。直到其所请求资源上锁被释放,如图2所示。 ?    ...开发人员不用担心SQL Server是如何决定使用哪个锁。因为SQL Server已经做了最好选择。     在SQL Server,锁粒度如表1所示。...在SQL Server,资源是有层次,一个表可以包含N个页,而一个页可以包含N个行。当我们在某一个行中加了锁时。可以理解成包含这个行页,和表部分已经被锁定。...因此SQL Server锁定一个粒度比较低资源时,会在其父资源上加上意向锁,告诉其他查询这个资源某一部分已经上锁。...图16.模拟一个死锁      可以看到,出现死锁后,SQL Server并不会袖手旁观让这两个进程无限等待下去,而是选择一个更加容易Rollback事务作为牺牲品,而另一个事务得以正常执行。

1.8K50
领券