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

关于ANSI_WARNINGS的设定
在存储过程中,insert的时候长度超过,需要自动截取,所以把ANSI_WARNINGS属性设置成OFF,想让它自动截取,但是同样的存储过程,在一个数据库中能够正在执行,但是在另一个数据库中就会报:异类查询要求为连接设置 ANSI_NULLS 和 ANSI_WARNINGS 选项。这将确保一致的查询语义。请启用这些选项,然后重新发出查询。
对这个设置理解不够,不知道怎么修改了,希望大家帮忙!
------解决方案--------------------
关于ansi_warnings选项:

SET ANSI_WARNINGS 可以影响下列情况:
设置为 ON 时,如果聚合函数(如 SUM、AVG、MAX、MIN、STDEV、STDEVP、VAR、VARP 或 COUNT)中出现空值,将生成警告消息。 设置为 OFF 时,不发出警告。

设置为 ON 时,被零除错误和算术溢出错误将导致回滚语句,并生成错误消息。 设置为 OFF 时,被零除错误和算术溢出错误将导致返回空值。 如果在 character、Unicode 或 binary 列上尝试执行 INSERT 或 UPDATE 操作,而这些列中的新值长度超出最大列大小,则将出现被零除错误和算术溢出错误导致返回空值的行为。
 如果 SET ANSI_WARNINGS 为 ON,则根据 ISO 标准,将取消 INSERT 或 UPDATE 操作。 字符列的尾随空格和二进制列的尾随零都将被忽略。 设置为 OFF 时,数据将剪裁为列的大小,并且语句执行成功。