sql 中SET LOCK_TIMEOUT 1000 的作用范围有多大 ,事务为什么没有回滚全部数据

mqmmx 2008-06-12 12:17:01
sql 版本
Microsoft SQL Server 2000 - 8.00.2039 (Intel X86) May 3 2005 23:18:38 Copyright (c) 1988-2003 Microsoft Corporation Enterprise Edition on Windows NT 5.0 (Build 2195: Service Pack 4)

现有一存贮过程 a

begin
SET LOCK_TIMEOUT 1000

insert into ......

end

又有另一个存贮过程B

begin tran

exec a

exec .... 执行其它存贮过程
....... 其它操作

If (@@TranCount > 0)
if (@@ERROR <> 0)
rollback
else
commit


现为什么报错锁超时(Lock timeout...),但没有回滚其它操作的数据

...全文
262 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
懒牛科技 2008-06-14
  • 打赏
  • 举报
回复
有点晕!
hery2002 2008-06-14
  • 打赏
  • 举报
回复
路过,
漂移~
up的说.
律己修心 2008-06-12
  • 打赏
  • 举报
回复
A的执行计划结束之后返回B时,就代表A中的所有事务都已经提交了

刚才写错一个字
律己修心 2008-06-12
  • 打赏
  • 举报
回复
发表一点个人理解

在存储过程B中调用存储过程A时

生成了另外的执行计划

这个存储过程A执行的过程中是不受B中其他语句的控制的(就算是出错了,也不能在B中设置回滚)

A的执行计划执行结果返回B时,就代表A中的所有事务都已经提交了

如果要设置事务回滚,应该直接写在A存储过程里

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧