自定义锁超时

本文涉及的产品
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
相关文章
|
11月前
|
存储 NoSQL Java
使用Redisson RLock锁防止定时任务短周期重复执行
在开发定时任务时,如果任务执行周期较短,可能会导致任务在前一次执行尚未完成时就再次触发,从而产生重复执行的问题。为了解决这个问题,我们可以借助Redisson的RLock锁机制,确保任务只有在前一次执行完成后才能再次执行。本文将介绍如何使用Redisson RLock锁来避免定时任务的重复执行。
359 0
使用Redisson RLock锁防止定时任务短周期重复执行
|
2月前
|
数据库连接 数据库
多线程事务失效的原因
【5月更文挑战第16天】多线程事务失效的原因
136 0
|
9月前
|
Java 程序员 调度
介绍几个常见的锁策略!
介绍几个常见的锁策略!
43 0
|
2月前
|
安全 Java 调度
常见的锁策略
常见的锁策略
|
11月前
|
Java 调度
关于常见的锁策略
关于常见的锁策略
45 0
|
2月前
|
安全 Java 编译器
常见锁策略
常见锁策略
28 0
|
2月前
|
Java 调度 数据库
锁策略之干货分享,确定不进来看看吗?️️️
锁策略之干货分享,确定不进来看看吗?️️️
72 0
|
Java 测试技术
高并发编程-自定义带有超时功能的锁
高并发编程-自定义带有超时功能的锁
46 0
|
SQL XML Java
事务超时
本文概览:介绍了超时有关的概念:@Transaction的timeout、mybatis的timeout、mysql的innodb_lock_wait_timeout。
事务超时
C#中开启线程的四种方法
C#中开启线程的四种方法

热门文章

最新文章