自定义锁超时

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介:

转载自:https://technet.microsoft.com/zh-cn/library/ms177413(v=sql.105).aspx


如果 Microsoft SQL Server 数据库引擎实例由于其他事务已拥有资源的冲突锁而无法将锁授予给某个事务,则该事务被阻塞,等待现有锁被释放。默认情况下,没有强制的超时期限,并且除了 尝试访问数据(有可能被无限期阻塞)外,没有其他方法可以测试某个资源是否在锁定之前已被锁定。


注意:在 SQL Server 中,可以使用 sys.dm_os_waiting_tasks 动态管理视图确定某个进程是否被阻塞以及被谁阻塞。在早期版本的 SQL Server 中,可以使用 sp_who 系统存储过程。


LOCK_TIMEOUT 设置允许应用程序设置语句等待阻塞资源的最长时间。如果某个语句等待的时间超过 LOCK_TIMEOUT 的设置时间,则被阻塞的语句自动取消,并会有错误消息 1222 (Lock request time-out period exceeded) 返回给应用程序。但是,SQL Server 不会回滚或取消任何包含语句的事务。因此,应用程序必须具有可以捕获错误消息 1222 的错误处理程序。如果应用程序不能捕获错误,则会在不知道事务中已有个别语句被取消的情况下继续运行,由于事务中后面的语句可能依赖于从未执行过的语句, 因此会出现错误。


实现捕获错误消息 1222 的错误处理程序后,应用程序可以处理超时情况,并采取补救措施,例如:自动重新提交被阻塞的语句或回滚整个事务。


若要确定当前 LOCK_TIMEOUT 设置,请执行 @@LOCK_TIMEOUT 函数:

1
2
SELECT  @@lock_timeout;
GO


相关文章:
http://www.sqlservergeeks.com/sql-server-error-1222-lock-request-time-out/

















本文转自UltraSQL51CTO博客,原文链接:http://blog.51cto.com/ultrasql/1790401 ,如需转载请自行联系原作者












相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
存储 NoSQL Java
使用Redisson RLock锁防止定时任务短周期重复执行
在开发定时任务时,如果任务执行周期较短,可能会导致任务在前一次执行尚未完成时就再次触发,从而产生重复执行的问题。为了解决这个问题,我们可以借助Redisson的RLock锁机制,确保任务只有在前一次执行完成后才能再次执行。本文将介绍如何使用Redisson RLock锁来避免定时任务的重复执行。
504 0
使用Redisson RLock锁防止定时任务短周期重复执行
|
16天前
|
存储 SQL 监控
|
2月前
|
NoSQL 前端开发 Java
【幂等性大坑】事务提交前释放锁导致锁失效问题
在事务中,使用了 Redis 分布式锁.这个方法一旦执行,事务生效,接着就 Redis 分布式锁生效,代码执行完后,先释放 Redis 分布式锁,然后再提交事务数据,最后事务结束。如果是表单重复提交场景,可以尝试给“订单号”等有唯一性的字段加唯一索引,这样重复提交时会因为唯一索引约束导致索引失效。5、如果表的一个字段,要作为另外一个表的外键,这个字段必须有唯一约束(或是主键),如果只是有唯一索引,就会报错。2、创建唯一约束,会自动创建一个同名的唯一索引,该索引不能单独删除,删除约束会自动删除索引。
【幂等性大坑】事务提交前释放锁导致锁失效问题
|
6月前
|
数据库连接 数据库
多线程事务失效的原因
【5月更文挑战第16天】多线程事务失效的原因
384 0
|
6月前
|
NoSQL Java Redis
Redis如何处理并发访问和竞态条件?
Redis如何处理并发访问和竞态条件?
69 0
|
Java 测试技术
高并发编程-自定义带有超时功能的锁
高并发编程-自定义带有超时功能的锁
67 0
|
SQL XML Java
事务超时
本文概览:介绍了超时有关的概念:@Transaction的timeout、mybatis的timeout、mysql的innodb_lock_wait_timeout。
事务超时
C#中开启线程的四种方法
C#中开启线程的四种方法
currentHashMap的公平锁,可中断响应,限制等待实例
currentHashMap的公平锁,可中断响应,限制等待实例
currentHashMap的公平锁,可中断响应,限制等待实例
C#编程-146:最简单的开启线程
C#编程-146:最简单的开启线程
116 0
C#编程-146:最简单的开启线程