|
原理篇:SQL Server数据库表锁定原理以及如何解除表的锁定
有几个朋友留言建议结合例子来演示一下,上篇已经说过锁的几种类型,可以利用系统动态视图sys.dm_tran_locks查看到,重要的栏位如下:
resource_type:被锁的资源类型(Database, FILE, Object,PAGE,KEY,EXTENT,RID,APPLICATION,METADATA,HOBT,APPOCATION_UNIT)。
request_mode:锁的类型(共享锁,更新锁,排它锁,架构锁等)。
resource_description:资源描述。
request_session_id:Request session ID。
一、下面以AdventureWorks2008为示例数据库做简要的说明,过滤掉一般的数据库的共享锁,作为示例必须要看到锁,所以用WITH(HOLDLOCK)来保持锁。
1. Shared locks (S) 共享锁
USE AdventureWorks2008
BEGIN TRAN
select * from Sales.SalesOrderHeader WITH(HOLDLOCK)
where SalesOrderID='43662'
SELECT resource_type, request_mode, resource_description,request_session_id, DB_NAME(resource_database_id)as resource_database
FROM sys.dm_tran_locks
WHERE resource_type <> 'DATABASE'
--ROLLBACK TRAN
it知识库:SQL Server数据库表锁定原理以及如何解除表的锁定--示例演示,转载需保留来源!
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。