%%lockres%%
这个值似乎很少被大家提到,甚至微软在官方文档中. 它返回是一个Hash Value,看乎这个值没什么用。
后来在实践也有它的妙用之处,比如在出现性能问题如LOCK时,一般先通过sys.dm_tran_locks去查看什么东西被lock,是什么级别的LOCK,是表、页、记录行?一旦定位级别,再通过查询结果中字段名为resource_description的值,与对应%%lockres%% 值匹配上。就可以很容易找到具体的LOCK位置。
例如:
当调用该值在一个有聚集索引的表上是,将返回针对聚集索引列的Hash value。
当在堆表上调用%%lockres%%值时,SQL Server 会返回RID值。
当请求一个行级别的LOCK在一个堆表上,考虑到堆表没有Key,SQL Server 会默认将lock放在RID上,基本格式为 FileID:PageID:Slot
--查询语句
SELECT %%lockres%%, * FROM 表名
Sa.