[讨论100分]存储过程在什么情况下调用不成功?
程序是C/S三层的,所有的业务逻辑判断都在存储过程中(包括数据基本的增,减,删也是)!
保存一个表的数据时,常常调用其它存储过程来更新其它表的相关记录。所以常有锁产生,忙时死锁也存在过。
问题是:时常发生数据未更新的情况,大部分是原因本身的数据表已更新,但调用其它存储过程不成功。
比如:保存表A对应的存储过程是ProA,ProA中调用ProB来Update其它表的相应记录.结果ProA被执行,但ProB没有执行,检查后语法上没有错误。
大家分析一下存储过程在什么情况下调用不成功呢?锁的影响是什么?
[解决办法]
不太清楚。
[解决办法]
最常发生的是数据校验等过不去
[解决办法]
顶上去
[解决办法]
如果没有用事务,这样做是很危险的
死锁和意外出错都会造成数据的部分更改,形成数据不统一
[解决办法]
你可以用事务来回滚。
[解决办法]
使用事务保证数据处理的一致性。
SQL Server的T-SQL支持事务嵌套。
如:
--设置事务处理的一致性开关,如果中途失败,整体回滚。
set xact_abort on
begin tran
...
commit tran
return 0
[解决办法]
一般是数据异常,或者资源锁定的情况下,执行不成功。
[解决办法]
一般修改表什么的,还是用事务吧!
[解决办法]
使用事务保证数据的一致性
SQL有检测死锁功能
一旦发现死锁系统会自动牺牲一个进程来解除死锁
有可能你那个进程被KILL了
[解决办法]
在数据更新中增加事务,保证数据的完整性
在开发工具调用存储过程是,保证能够获取存储过程执行的状况(成功,不成功,或在存储过程中增加错误代码),确保存储过程执行的成功率
[解决办法]
1.比如插入字相同的,
2.field(0) : tinyint update field(2)=123434123..
............................
一般是行到的那句吧,可能在proc_A,也可能在proc_B的前句.....
把存起,手行看看..
[解决办法]
使用事务保证数据的一致性,这样比较好