SQLSERVER中的元数据锁(二)
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没有了元数据锁
元数据是一种资源,可以锁定的资源,元数据锁并不是一种锁类型!!!