sqlserver锁表、解锁、查看锁表



转:http://www.cnblogs.com/zfanlong1314/p/3698566.html


面演示一个实例,它使用sys.dm_tran_locks动态视图监视数据库中锁的活动。
 
打开一个查询窗口,执行如下语句:
 
USE AdventureWorks
BEGIN TRAN
SELECT ProductID, ModifiedDate
FROM Production.ProductDocument
WITH (TABLOCKX)
 
 
打开另一个查询窗口,执行:
SELECT
request_session_id  as sessionid,
resource_type as type,
resource_database_id as dbid,
OBJECT_NAME(resource_associated_entity_id, resource_database_id) as objectname,
request_mode as rmode,
request_status as rstatus
FROM sys.dm_tran_locks
WHERE resource_type IN ( 'DATABASE' , 'OBJECT' )
 



锁一个SQL表的语句是SQL数据库使用者都需要知道的,下面就将为您介绍锁SQL表的语句,希望对您学习锁SQL表方面能有所帮助! 
锁定数据库的一个表 
SELECT * FROM  table WITH (HOLDLOCK)
 
注意: 锁定数据库的一个表的区别
SELECT * FROM  table WITH (HOLDLOCK)
  其他事务可以读取表,但不能更新删除

  SELECT * FROM table WITH (TABLOCKX) 
其他事务不能读取表,更新和删除
 
SELECT 语句中“加锁选项”的功能说明 
SQL Server提供了强大而完备的锁机制来帮助实现数据库系统的并发性和高性能。用户既能使用SQL Server的缺省设置也可以在 select 语句中使用“加锁选项”来实现预期的效果。 本文介绍了 SELECT 语句中的各项“加锁选项”以及相应的功能说明。
 
功能说明: 
NOLOCK(不加锁) 
此选项被选中时,SQL Server 在读取或修改数据时不加任何锁。 在这种情况下,用户有可能读取到未完成事务(Uncommited Transaction )或回滚(Roll Back)中的数据, 即所谓的“脏数据”。
 
HOLDLOCK(保持锁) 
此选项被选中时,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) 其他事务不能读取表,更新和删除
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值