[讨论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的前幾條語句.....   
 把數據存起來,手動執行看看..
------解决方案--------------------使用事务保证数据的一致性,这样比较好