我们在处理数据库的触发器时,有时候会遇到锁超时的问题,导致触发器无法被禁用,如图所示:
遇到这种问题时,可以使用以下三个语句:
1.select * from v
l
o
c
k
(
查
询
数
据
库
表
的
锁
的
情
况
)
2.
s
e
l
e
c
t
∗
f
r
o
m
s
y
s
o
b
j
e
c
t
s
(
查
询
对
象
信
息
)
3.
s
e
l
e
c
t
∗
f
r
o
m
v
lock (查询数据库表的锁的情况) 2.select * from sysobjects (查询对象信息) 3.select * from v
lock(查询数据库表的锁的情况)2.select∗fromsysobjects(查询对象信息)3.select∗fromvsessions (查询会话信息)
上述3条语句组合一下就能查出哪张表上的某种锁是由哪个会话里的操作加上的:
select a.*,b.NAME,c.SESS_ID from v
l
o
c
k
a
l
e
f
t
j
o
i
n
s
y
s
o
b
j
e
c
t
s
b
o
n
b
.
I
D
=
a
.
T
A
B
L
E
I
D
l
e
f
t
j
o
i
n
v
lock a left join sysobjects b on b.ID=a.TABLE_ID left join v
lockaleftjoinsysobjectsbonb.ID=a.TABLEIDleftjoinvsessions c on a.TRX_ID=c.TRX_ID
在查询到对应会话的sess_id后,即可通过sp_close_session(sess_id)来强行关掉该对话,之后即可正常禁用触发器了。
达梦数据库处理锁超时问题办法
最新推荐文章于 2024-06-27 17:37:18 发布