存储过程中XACT_ABORT_NOCOUNT_ISOLATION的意思
我们会常在存储过程中,加入以下三句话,但很多人不知道是什么意思,后面是解释:
SET NOCOUNT ON/OFF:
当SET NOCOUNT为ON时,不返回计数(执行完后会返回SQL影响行数),此时将不会;当设置为OFF时,返回计数。
如果存储过程中包含的SQL语句并不返回许多实际的数据,可以将之设为ON,可以大量减少网络流量,而可显著提高性能。
SET XACT_ABORT ON/OFF:
当SET XACT_ABORT为ON时,如果执行Transact-SQL语句出错时,会立即停止执行,并回滚数据;
当设为OFF时,有时只回滚产生错误的SQL语句,而事物将继续处理,如果错误很严重,那么即使设置为OFF,也会回滚整个事务,OFF是默认设置。
编辑错误或语法错误,将不设XACT_ABORT的影响。
对于大多数 OLE DB 访问接口(包括 SQL Server),必须将隐式或显示事务中的数据修改语句中的 XACT_ABORT 设置为 ON。唯一不需要该选项的情况是在提供程序支持嵌套事务时。
SET XACT_ABORT 的设置是在执行或运行时设置,而不是在分析时设置。
SET TRANCACTION ISOLATION LEVEL READ:
此为设置一个事务的隔离级别,一次只能设置一个隔离级别选项,并且始终对那个连接有效,直到显示更改设置选项。
事务中执行的所有读取操作都会在指定的隔离级别的规则下运行,除非语句的 FROM 子句中的表提示为表指定了其他锁定行为或版本控制行为。
当属性设为UNCOMMITTED时,指定语句可以读取已有其他事务修改而未提交的行;设置此选项之后,可以读取未提交的修改,这种读取称为脏读。在事务结束之前,可以更改数据中的值,行也可以出现在数据集中或从数据集中消失。该选项的作用与在事务内所有 SELECT 语句中的所有表上设置 NOLOCK 相同。这是隔离级别中限制最少的级别。
当属性设为COMMITTED时,指定语句不能读取已有其他事务修改而未提交的行,这样可以避免脏读。其他事务可以在当前事务的各个语句之间更改数据,从而产生不可重复读取和幻像数据。该选项是 SQL Server 的默认设置。
本博文章基本上属于原创或收集整理,都是心血结晶。
欢迎转载分享,转载请注明出处,谢谢!
本文地址:存储过程中XACT_ABORT_NOCOUNT_ISOLATION的意思
一条评论
你这个blog也是用sql server? 我考虑过 access sql 最后还是选择mysql