日期:2014-05-18  浏览次数:20758 次

怎么用程序知道那些表被索了并且解锁
通过程序查找一个Database里面,那些Table被用户锁定了。并且把他们解锁。
用Ado.Net能实现么?

------解决方案--------------------
沙发 帮你顶下
------解决方案--------------------
Mark
------解决方案--------------------
要查Database的系统表,如果一个激活的session长时间对一表操作,这个表就可能被锁了。
具体看Database。
------解决方案--------------------
帮你顶!
------解决方案--------------------
只知道sqlserver的做法。sp_who 查询锁状态,blk字段表示被哪个Id阻塞。 然后可以 kill <id> 锁。当然连接的用户要有sa权限。貌似sqlserver也有SET LOCK_TIMEOUT的自动解锁控制,不过好像有问题,设置了不起作用。

不过对于死锁还是应该想办法消除产生的原因或者减少产生的可能性,靠解锁只能应急而已。
------解决方案--------------------
1、这个应该是看你使用的 DataBase 的数据表中查找,具体的问题要看数据库的帮助。
比如:oracle 中查找 lock table 就可以。
上次看了一下,oracle 中好像记得是开启事务而不提交[确认事务、会滚事务]等,都会造成死锁。需要检查代码更改错误。
2、设定数据库的读取时间,比如:30s不反映就算是“死锁”。不过这个方法可能误判,需要仔细调整。