在具有特定行 sybase 的 table 上找到锁

find locks on a table with specifc row sybase

下面的查询会给我锁 table

select distinct object_name(id)
from master..syslocks 

我正在搜索的是找出锁定在哪一行?

例如,如果我收到 update messages set name ='hi' where id =1 并且消息导致锁定,我希望查询知道此 table 的 id =1 导致锁定。我能知道吗?

首先,这取决于您 table 是否正在使用 AllPages/Datapages/Datarows 锁定方案(参见 "sp_help tablename" 的输出)

如果是数据行,您可以在特定行上获得锁,否则锁将在页面(数据或索引或两者)或 table 上。 使用 syslocks 或 sp_lock,您可以检索涉及锁定的页面。 要打印页面内容,您可以 运行 "dbcc page (database_id,pageno,4)"