SQL server中怎样做锁表和解锁表的操作?

Admin 2021-10-12 群英技术资讯 1108 次浏览

    这篇文章给大家分享几个SQL server中对表的操作方法,也就是锁表、解锁表以及查看锁表的操作,具体怎样实现呢?接下来我们一起来看一下实现的代码,有需要的朋友可以参考。

    锁定数据库的一个表

    代码如下:
    SELECT * FROM table WITH (HOLDLOCK)

    注意: 锁定数据库的一个表的区别

    代码如下:
    SELECT * FROM table WITH (HOLDLOCK)

    其他事务可以读取表,但不能更新删除

    代码如下:
    SELECT * FROM table WITH (TABLOCKX)

    其他事务不能读取表,更新和删除
    SELECT 语句中“加锁选项”的功能说明
    SQL Server提供了强大而完备的锁机制来帮助实现数据库系统的并发性和高性能。用户既能使用SQL Server的缺省设置也可以在select 语句中使用“加锁选项”来实现预期的效果。 本文介绍了SELECT语句中的各项“加锁选项”以及相应的功能说明

    查看被锁表:

     代码如下:
    select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName
    from sys.dm_tran_locks where resource_type='OBJECT'

    spid 锁表进程
    tableName 被锁表名
    [@more@]

    解锁:

    创建一个临时Table

CREATE TABLE #HarveyLock
(
SPID INT,
DBID INT,
OBJID INT,
INDID INT,
TYPE VARCHAR(100),
RESOURCE VARCHAR(100),
MODE VARCHAR(100),
STATUS VARCHAR(100)
)

    将Lock信息存入该Table
    INSERT INTO #HarveyLock EXEC SP_LOCK

    3.在Table中下条件查询得到的LOCK
    SELECT * FROM #HarveyLock

    4.KILL 相关LOCK
    KILL @SPID
    例

declare @spid int 
Set @spid = 57 --锁表进程
declare @sql varchar(1000)
set @sql='kill '+cast(@spid as varchar)
exec(@sql)
        关于SQL server中对表的操作就介绍到这啦,上述代码对大家学习和理解锁表的操作有一定的帮助,有需要的朋友可以参考,想要了解更多sql表操作,大家可以继续浏览群英网络其他相关的文章。

文本转载自脚本之家

群英智防CDN,智能加速解决方案
标签: sql表操作

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

猜你喜欢

成为群英会员,开启智能安全云计算之旅

立即注册
专业资深工程师驻守
7X24小时快速响应
一站式无忧技术支持
免费备案服务
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
在线客服
微信公众号
返回顶部
返回顶部 返回顶部
在线客服
在线客服