Sybase中判断阻塞发生在某张表上

浏览:99日期:2023-12-04

1. 使用sp_lock进行察看,如果 输出信息 locktype 中包含 -blk 字符,说明当前表table_id的page上的锁对其他进程造成了阻塞 2. 通过察看master..syslocks系统表 例 id dbid page type spid class fid context row loid ----------- ------ ----------- ------ ------ -----512004855 6 0 3 13 Non Cursor Lock 0 0 0 26 512004855 6 0 4 12 Non Cursor Lock 0 0 0 24 512004855 6 0 3 10 Non Cursor Lock 0 0 0 20 512004855 6 793 261 13 Non Cursor Lock 0 8 0 26 从spid可知道当前阻塞及被阻塞的进程,并且从type字段可以知道锁的类型,见下表: 1 0x1 排它表锁 2 0x2 共享表锁 3 0x3 排它意图锁 4 0x4 共享意图锁 5 0x5 排它页锁 6 0x6 共享页锁 7 0x7 更新页锁 8 0x8 排它行锁 9 0x9 共享行锁 10 0xA 更新行锁 11 0xB 共享下一键锁 256 0x100 锁在阻塞另一个进程 512 0x200 请求锁

所以你可以通过下面的查询获得阻塞表信息 select b.name as dbname,a.id as table_id,page,spid from syslocks a,sysdatabases b where b.dbid = a.dbid and a.type & 256 = 256

你也可以写成一个存储过程,不过一定要在master中执行。

相关文章: