sql-server - 为什么 Sp_lock 不显示 RID 类型?
问题描述
当我在我的数据库上执行 sp_lock 时,我看到一些带有 RID 的行,它定义了哪个记录被锁定:
如果我在另一台服务器上执行 sp_lock 并与另一个用户一起执行另一个数据库,我不会得到 RID:
为什么?这可能是用户的授权问题吗?
解决方案
您的数据库中的表是一个堆。
“当表存储为堆时,通过引用由文件号、数据页号和页面上的槽组成的行标识符 (RID) 来标识各个行。行 ID 是一种小而有效的结构。”
您的 dml 语句需要锁定相应的行,并且每一行都由 RID 标识。
在另一台服务器上,有另一个表和另一个用户,该表是一个集群表。每行由聚集索引的“值”标识。您的 dml 语句需要锁定相应的行,并且每一行都由 KEY(索引值)标识。