sqlserver锁表语句以及解锁语句
refs:
此选项被选中时,SQL Server 会将此共享锁保持⾄整个事务结束,⽽不会在途中释放。
UPDLOCK(修改锁)
此选项被选中时,SQL Server 在读取数据时使⽤修改锁来代替共享锁,并将此锁保持⾄整个事务或命令结束。使⽤此选项能够保证多个进程能同时读取数据但只有该进程能修改数据。
TABLOCK(表锁)
此选项被选中时,SQL Server 将在整个表上置共享锁直⾄该命令结束。 这个选项保证其他进程只能读取⽽不能修改数据。
PAGLOCK(页锁)
此选项为默认选项, 当被选中时,SQL Server 使⽤共享页锁。
TABLOCKX(排它表锁)
此选项被选中时,SQL Server 将在整个表上置排它锁直⾄该命令或事务结束。这将防⽌其他进程读取或修改表中的数据。
HOLDLOCK 持有共享锁,直到整个事务完成,应该在被锁对象不需要时⽴即释放,等于SERIALIZABLE事务隔离级别
NOLOCK 语句执⾏时不发出共享锁,允许脏读 ,等于 READ UNCOMMITTED事务隔离级别
PAGLOCK 在使⽤⼀个表锁的地⽅⽤多个页锁
READPAST 让sql server跳过任何锁定⾏,执⾏事务,适⽤于READ UNCOMMITTED事务隔离级别只跳过RID锁,不跳过页,区域和表锁
ROWLOCK 强制使⽤⾏锁
TABLOCKX 强制使⽤独占表级锁,这个锁在事务期间阻⽌任何其他事务使⽤这个表
UPLOCK 强制在读表时使⽤更新⽽不⽤共享锁
注意: 锁定数据库的⼀个表的区别
SELECT * FROM table WITH (HOLDLOCK) 其他事务可以读取表,但不能更新删除
SELECT * FROM table WITH (TABLOCKX) 其他事务不能读取表,更新和删
-----
查看sqlserver被锁的表以及如何解锁
查看被锁表:
www.2cto
select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran_locks where resource_type='OBJECT'
sqlserver备份表语句spid 锁表进程
tableName 被锁表名
解锁:
declare @spid int
Set @spid = 57 --锁表进程
declare @sql varchar(1000)
set @sql='kill '+cast(@spid as varchar)
exec(@sql)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论