标签归档:ARITHABORT

delete失败,因为下列 SET 选项的设置不正确: ‘ARITHABORT’


摘要:
今天在使用delete操作数据表时,出现以下错误信息 ,set 选项设置不正确,请set相关选项后,再进行相关操作



场景描述:
当你在SQL Server上试图更新一个索引视图引用的表时,
系统输出以下错误信息:
INSERT 失败,因为下列 SET 选项的设置不正确: ‘ARITHABORT’
在计算列或索引视图上创建或操作索引时,SET ANSI_NULLS 也必须为 ON。
如果 SET ANSI_NULLS 为 OFF,计算列或索引视图上带索引的表上的 CREATE、UPDATE、INSERT 和 DELETE 语句将失败。

解决方法:
1.如果是SSMS管理器中,查询分析器中执行相关代码,在执行代码前加入
set ARITHABORT ON
go
/*sql脚本*/
2.如果是c#调用相关代码,在发送sql脚本至服务器时,先放入set arithabort on
conn.Execute(“set arithabort on /*sql 脚本*/ “);
3.也可以对数据库相关信息进行设置
exec sp_dboption ‘数据库名称’,’ARITHABORT’,’true’

mssql sqlserver ARITHABORT 属性简介及举例应用


摘要:
下文讲述sqlserver中 ARITHABORT 属性的相关功能及举例说明


一、ARITHABORT 属性功能说明

ARITHABORT 设置为ON时,当出现溢出或被零整除时,会终止查询,
默认情况下:SSMS中 ARITHABORT 属性为ON
1 .SET ARITHABORT 设置为 ON, SET ANSI_WARNINGS 设置为 ON 当出现错误时候,导致查询终止
2 .SET ARITHABORT 设置为 ON, SET ANSI_WARNINGS 设置为 OFF 出现错误导致批处理终止,如果发生在事务内,则会回滚事务,如果此时将 SET ARITHABORT 设置为 OFF,
则显示一条警告结果,并将 null赋值给运算结果,如果待赋值变量存在值,则直接输出原变量数值,程序继续向下运行
3 .SET ARITHABORT 设置为 OFF, SET ANSI_WARNINGS 设置为 OFF ,当出现错误时,显示一条警告消息,并将 null赋值给运算结果,如果待赋值变量存在值,则直接输出原变量数值

二、ARITHABORT 属性使用举例

 create table test (keyId int identity,qty int,qty2 int)
 go
 
 insert into test(qty)values(1),(2),(0),(3)
 go
 
 set ARITHABORT OFF
 set ANSI_WARNINGS OFF
 
 update test set qty2 = keyId/qty
  select * from test 
 go
 
 truncate table test
 drop table test 
mssql_sqlserver_ARITHABORT_关键字举例应用

mssql_sqlserver_ARITHABORT_关键字举例应用