SQLSERVER中的元数据锁(二)

2014-11-24 17:04:43 · 作者: · 浏览: 1
est_session_id], 14 c.[program_name], 15 DB_NAME(c.[dbid]) AS dbname, 16 [resource_type], 17 [request_status], 18 [request_mode], 19 [resource_description],OBJECT_NAME(p.[object_id]) AS objectname, 20 p.[index_id] 21 FROM sys.[dm_tran_locks] AS a LEFT JOIN sys.[partitions] AS p 22 ON a.[resource_associated_entity_id]=p.[hobt_id] 23 LEFT JOIN sys.[sysprocesses] AS c ON a.[request_session_id]=c.[spid] 24 WHERE c.[dbid]=DB_ID('pratice') AND a.[request_session_id]=@@SPID ----要查询申请锁的数据库 25 ORDER BY [request_session_id],[resource_type]


但是在SQLSERVER2012中
无论是
BEGIN TRAN
select object_id from sys.tables with (nolock) where name = 'xxx' 
还是
BEGIN TRAN
SELECT * FROM ct1 WHERE c1=50

都看不到元数据锁了
1 BEGIN TRAN
2 select object_id from sys.tables with (nolock) where name = 'xxx' 

1 BEGIN TRAN
2 select object_id from sys.tables with (nolock) where name = 'xxx' 

可能SQLSERVER2012隐藏了元数据锁,觉得就算显示出元数据锁对于排查阻塞也没有多大意义,干脆隐藏算了
但是这里并不是说SQLSERVER2012没有了元数据锁
元数据是一种资源,可以锁定的资源,元数据锁并不是一种锁类型!!!