如何检查表是否在sql server中被锁定 [英] How to check if a table is locked in sql server

查看:118
本文介绍了如何检查表是否在sql server中被锁定的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个大报告我在sql server上运行。运行需要几分钟。我不希望用户点击运行两次。因为我在事务中包装整个过程,我如何检查以查看表是否被事务锁定?如果是这样,我想返回一条错误消息,说生成报告,请在几分钟后再试一次。

I have a large report I am running on sql server. It takes several minutes to run. I don't want users clicking run twice. Since i wrap the whole procedure in a transaction, how do I check to see if the table is locked by a transaction? If so I would want to return an error message saying "report generating, please try again in a few minutes".

如何实现?

推荐答案

更好的是,考虑 sp_getapplock 。或使用 SET LOCK_TIMEOUT

Better yet, consider sp_getapplock which is designed for this. Or use SET LOCK_TIMEOUT

否则,您必须使用 sys.dm_tran_locks 我只用于DBA的东西:不是用户定义的并发。

Otherwise, you'd have to do something with sys.dm_tran_locks which I'd use only for DBA stuff: not for user defined concurrency.

这篇关于如何检查表是否在sql server中被锁定的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆