SQL Server - 锁
吉普赛的歌
这个作者很懒,什么都没留下…
展开
-
一个用户多条记录,以最后记录产生新的余额记录
-- 测试表及测试数据开始USE tempdbGOIF OBJECT_ID('t') IS NOT NULL DROP TABLE tCREATE TABLE t( id INT IDENTITY(1,1) PRIMARY KEY , userId INT NOT NULL, consume INT NOT NULL, balance INT NOT NULL)--第一条记录视原创 2017-09-07 16:17:28 · 642 阅读 · 0 评论 -
用扩展事件捕获死锁
另有利用现成系统自带扩展事件查看死锁:点击打开链接一、打开 SSMS , 找到 “扩展事件”->"会话"->“新建会话向导”:二、会话名称为: Deadlock_Monitor三、不使用模板四、事件库文本框键入: deadlock , 将 xml_deadlock_report 加到右边五、选择一些需要的字段, 不选择也没关系(因为我们只需要知道死锁是怎么造成的就可以了)六、直...原创 2017-10-19 17:20:47 · 979 阅读 · 0 评论 -
检测和结束死锁
原文:msdn在两个或多个任务中,如果每个任务锁定了其他任务试图锁定的资源,此时会造成这些任务永久阻塞,从而出现死锁。下图清楚地显示了死锁状态,其中:任务 T1 具有资源 R1 的锁(通过从 R1 指向 T1 的箭头指示),并请求资源 R2 的锁(通过从 T1 指向 R2 的箭头指示)。任务 T2 具有资源 R2 的锁(通过从 R2 指向 T2 的箭转载 2018-01-19 15:09:47 · 903 阅读 · 0 评论 -
锁兼容性(数据库引擎)
原文: msdn锁兼容性控制多个事务能否同时获取同一资源上的锁。如果资源已被另一事务锁定,则仅当请求锁的模式与现有锁的模式相兼容时,才会授予新的锁请求。如果请求锁的模式与现有锁的模式不兼容,则请求新锁的事务将等待释放现有锁或等待锁超时间隔过期。例如,没有与排他锁兼容的锁模式。如果具有排他锁(X 锁),则在释放排他锁(X 锁)之前,其他事务均无法获取该资源的任何类型(共享、更新或排他)的转载 2018-01-19 15:23:02 · 373 阅读 · 0 评论 -
处理死锁
原文: msdnMicrosoft SQL Server 数据库引擎实例选择某事务作为死锁牺牲品后,将终止当前批处理,回滚事务并将 1205 号错误消息返回应用程序。Your transaction (process ID #52) was deadlocked on {lock | communication buffer | th转载 2018-01-19 15:25:26 · 258 阅读 · 0 评论 -
表提示(几种常见的锁)
原文:msdn 参考: 点击打开链接通过指定锁定方法、一个或多个索引、查询处理操作(如表扫描或索引查找)或其他选项,表提示可在数据操作语言 (DML) 语句执行期间覆盖查询优化器的默认行为。表提示在 DML 语句的 FROM 子句中指定,仅影响在该子句中引用的表或视图。注意由于 SQL Server 查询优化器通常会为查询选转载 2018-01-19 15:53:34 · 1470 阅读 · 0 评论 -
用事务为防止并发时多次更新同一记录(锁)
--准备测试表及测试数据USE tempdbGOIF OBJECT_ID('task') IS NOT NULL DROP TABLE taskGOCREATE TABLE task ( taskId INT IDENTITY(1,1) PRIMARY KEY ,taskName NVARCHAR(50) NOT NULL ,d DATETIME NOT NULL DEFAULT(...原创 2018-03-16 14:10:33 · 4519 阅读 · 0 评论 -
在 ErrorLog 日志中开启死锁标记
--使用下面的命令,将有关的跟踪标志启用。DBCC TRACEON (3605,1204,1222,-1) /*说明:3605 将DBCC的结果输出到错误日志。1204 返回参与死锁的锁的资源和类型,以及受影响的当前命令。1222 返回参与死锁的锁的资源和类型,以及使用了不符合任何 XSD 架构的 XML 格式的受影响的当前命令(比1204更进一步,SQL 2005及以上可用)。原创 2017-06-29 11:39:26 · 1255 阅读 · 1 评论