sp_familylock [<fpid1>[, <fpid2>]]
<fpid1>
是 master.dbo.sysprocesses 表中工作进程系列的系列标识符。运行 sp_who 或 sp_lock 可以获得父进程的 <spid>。
<fpid2>
是其它锁的 SAP ASE 进程 ID 号。
显示 fid 为 5 的系列中所有成员持有的锁的相关信息:
sp_familylock 5
fid spid locktype table_id partitionid page dbname class context
--- ---- ---------- --------- ----------- ---- ------ --------------- -----------------------
5 5 Sh_intent 176003658 0 0 userdb Non cursor lock Sync-pt duration request
5 5 Sh_intent-blk 208003772 0 0 userdb Non cursor lock Sync-pt duration request
5 6 Sh_page 208003772 0 3972 userdb Non cursor lock Sync-pt duration request
5 7 Sh_page 208003772 0 3973 userdb Non cursor lock Sync-pt duration request
5 8 Sh_page 208003772 0 3973 userdb Non cursor lock Sync-pt duration request
显示有关分区级锁的信息:
sp_familylock
spid locktype table_id partitionid page row…
---- ------------------ ----------- ------------- ----- ----
0 Ex_partition 576002052 576004423 0 0
0 Sh_partition_intent 1417053053 1417053053 0 0
partitionid 的表锁值和精细锁值为 0。仅为分区级锁填充 partitionid。
使用 sp_familylock 时,还存在一些其它注意事项:
a) “Non Cursor Lock”表示锁没有与游标关联。
b) “Cursor Id <>关联。
c) 游标名表示锁与游标
a) 零值指示 spid 代表的任务是串行执行的。它不参与并行执行。
b)非零值表明持有锁的任务(spid)是并行执行语句的进程系列的成员(由“fid”标识)。如果值等于 spid, 则表明该任务是并行执行查询的进程系列中的协调进程。
a) “NULL”表示持有该锁的任务在执行串行查询,或者在事务隔离级别 1 上执行并行查询。
b) “FAM_DUR”表示持有该锁的任务在完成查询之前一直持有锁。
以下情况下,锁的环境可以是“FAM_DUR”:锁是作为并行查询的一部分而被持有的表锁;锁在事务隔离级别 3 上被工作进程持有;锁被并行查询中的工作进程持有并且必须在事务持续期间被持有。