日期:2014-05-17  浏览次数:20363 次

SQL 截断二进制字符串时如何避免事务提交
事务中有插入语句。如出现“截断二进制字符串”错误时,事务竟正常提交?请高手指教!

------解决方案--------------------
在执行事务时,只有遇到系统错误(如客户端断线,文件已满,权限不足,死锁等),事务才会自动回滚,释放占用的资源(锁)。
而遇到其他错误时(如,T-SQL 语句错误),事务不会自动回滚,而是继续执行下一个语句,因此需要在每一条语句执行后进行错误检查(@@ERROR <> 0)以决定是否回滚整个事务。
另外,还可以通过 SET XACT_ABORT ON,在遇到 T-SQL 语句执行错误时终止整个批处理并回滚整个事务。但是,如果事务中有批处理因为语法分析和编译错误而不被执行(显示事务中可以包括多个批处理),事务会继续执行下一个批处理,此类错误将无法通过 SET XACT_ABORT ON 回滚,但可以在批处理后通过 @@ERROR <> 0 检查到。