关于SQL Server事务处理的一系列问题。我分有多,只要能给出详细答案,我愿按字算分。(1)
Ivony 2006-06-16 11:02:03 1、SQL Server的COMMIT TRANSACTION是不是提交所有的事务,如果事务嵌套的话,是不是应该为每一个事务指定名称而避免内层事务COMMIT提交所有事务处错。如果是这样,那么ADO.NET的BeginTransaction方法创建的事务是否具备一个唯一名称,外层ADO.NET开启一个事务调用存储过程,而存储过程内又开启一个事务会不会出问题,我测试似乎并不稳定,期待高人解答。
2、SQL Server的事务在出错的时候是不是会自动回滚?多么严重的错误会导致回滚?是不是有任何设置能让它不回滚,也就是这一点是可以完全信赖的吗?
3、我知道UPDATE/DELETE语句如果没有更新任何记录不算错误,那么如果是要求他们一定要对数据库进行操作,是否应该在这些语句前写SELECT判断是否有满足筛选条件的任何记录?还是应该在操作后判断@@ROWCOUNT?那么在之前用SELECT判断的话,事务能不能保证在执行SELECT语句到执行UPDATE/DELETE这段时间之内数据库相关的行列不会有任何改动导致SELECT的结果有可能变化?在执行完UPDATE/DELETE到判断@@ROWCOUNT之间会不会有任何因素(除了在当前事务中再执行一段UPDATE/INSERT语句)改变@@ROWCOUNT?
4、如果INSERT失败是否一定会导致事务回滚?如果不是,哪些情况会导致?
5、如果INSERT/UPDATE/DELETE操作遇到约束导致失败,会不会回滚事务?
6、如果INSERT/UPDATE/DELETE操作的触发器所进行的操作发生错误,会不会回滚事务?
7、如果操作遇到权限问题导致失败,会不会回滚事务?
最后问一个附加问题。
SQL Server要用到跨库跨服务器的事务的时候,应该用分布式事务吗?用什么分布式事务比较好?