1. SET ANSI_NULLS :指定在与 Null 值一起使用等于 (=) 和不等于 (<>) 比较运算符时采用符合 ISO 标准的行为。
重要提示:
在SQL Server的未来版本中,SET ANSI_NULLS将始终为ON,将该选项显式设置为 OFF 的任何应用程序都将产生错误。
(1). 当 SET ANSI_NULLS 为 ON 时,即使 column_name 中包含空值,使用 WHERE column_name = NULL 的 SELECT 语句仍返回零行。即使 column_name 中包含非空值, 使用 WHERE column_name <> NULL 的 SELECT 语句仍会返回零行。
(2). 当 SET ANSI_NULLS 为 ON 时,所有对 null 值的比较均取值为 UNKNOWN。当 SET ANSI_NULLS 为 OFF 时,如果数据值为 NULL,则所有数据对空值的比较将取值为 TRUE。如果未指定 SET ANSI_NULLS,则应用当前数据库的 ANSI_NULLS 选项设置。
注:为使脚本按预期运行,不管 ANSI_NULLS 数据库选项或 SET ANSI_NULLS 的设置如何,请在可能包含空值的比较中使用 IS NULL 和 IS NOT NULL。
2. SET ANSI_PADDING:针对小于定义的列大小的值以及 char、varchar、binary 和 varbinary 数据中有尾随空格的值,此语句可以控制存储此类值的方式。
注:当 ANSI_PADDING 设置为 OFF 时,字符列上涉及 MIN、MAX 或 TOP 的查询可能会比 SQL Server 2000 中的慢。
3. SET ANSI_WARNINGS :
(1). 设置为 ON 时,如果聚合函数(如 SUM、AVG、MAX、MIN、STDEV、STDEVP、VAR、VARP 或 COUNT)中出现空值,将生成警告消息。设置为 OFF 时,不发出警告
(2). 设置为 ON 时,被零除错误和算术溢出错误将导致回滚语句,并生成错误消息。设置为 OFF 时,被零除错误和算术溢出错误将导致返回空值。如果在 character、Unicode 或 binary 列上尝试执行 INSERT 或 UPDATE 操作,而这些列中的新值长度超出最大列大小,则将出现被零除错误和算术溢出错误导致返回空值的行为。如果 SET ANSI_WARNINGS 为 ON,则根据 ISO 标准,将取消 INSERT 或 UPDATE 操作。字符列的尾随空格和二进制列的尾随零都将被忽略。设置为 OFF 时,数据将剪裁为列的大小,并且语句执行成功。
注:SET ANSI_DEFAULTS 为 ON 时,将启用 SET ANSI_WARNINGS,SET ANSI_WARNINGS 的设置是在执行或运行时设置的,而不是在分析时设置的。
如果 SET ARITHABORT 或 SET ARITHIGNORE 为 OFF,而 SET ANSI_WARNINGS 为 ON,则遇到被零除或溢出错误时,SQL Server 仍会返回错误消息。
4. SET ARITHABORT:在查询执行过程中发生溢出或被零除错误时,终止查询。
1. 如果 SET ARITHABORT 为 ON,并且 SET ANSI WARNINGS 也为 ON,则这些错误情况将导致查询终止。如果 SET ARITHABORT 为 ON,但 SET ANSI WARNINGS 为 OFF,则这些错误情况将导致批处理终止。如果 SET ARITHABORT 为 OFF 并且发生了这些错误之一,则显示一条警告消息,并将 NULL 赋予算术运算的结果。
5. 控制在查询执行过程中,是否返回溢出或被零除错误的错误消息。