微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > Sybase数据库死锁对策

Sybase数据库死锁对策

时间:09-06 来源:IT专家网 点击:

应的操作员信息表,便可知道操作员是谁。

  Fid spid status loginame origname blk dbname cmd

  0 1 lock sleep lm lm 18 QJYD SELECT

  0 2 sleeping NULL NULL 0 master NETWORK HANDLER

  0 3 sleeping NULL NULL 0 master NETWORK HANDLER

  ……

  用sp_lock浏览锁

  要得到关于当前SQL Server上保持的锁的报告,可用系统过程sp_lock [spid1[,spid2]],spid1,spid2是表master.dbo.sysprocesses中的sql server进程id号,用sp_who可以得到锁定与被锁定的spid号:

  ◆locktype列显示加锁的类型和封锁的粒度,有些锁的后缀还带有blk表明锁的状态。前缀表明锁的类型:Sh-共享锁,Ex-排它锁或更新锁,中间表明锁死在表上("table"或’intent’)还是在页上(page). 后缀"blk"表明该进程正在障碍另一个需要请求锁的进程。一旦正在障碍的进程一结束,其他进程就向前移动。"demand"后缀表明当前共享锁一释放, 该进程就申请互斥锁。

  ◆table_id列显示表的id号,结合sysobjects即可查出被封锁的表名。

  执行该进程后屏幕显示

  Fid Spid locktype table_id page row dbname Class context

  0 1 Sh_intent 678293476 0 0 QJYD Non Cursor LockFam dur

  0 1 Sh_page 678293476 31764 0 QJYD Non Cursor Lock

  0 18 Ex_intent 9767092 0 0 QJYD Non Cursor LockFam dur

  ……

  定位出错处

  根据sp_who与sp_lock命令的结果,结合sysobjects和相应的操作员信息表。得到操作员及其在死锁时所操作的库表,便大约可以知道应用程序的出错处,再询问操作员在死锁时执行什么操作以进一步认证。最后查找程序并修正之。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top