我使用NHibernate和sql Server 2005,并且在我的一个表中的计算列上有一个索引.
我的问题是,当我向该表插入记录时,我收到以下错误:
INSERT Failed because the following SET options have incorrect settings: ‘ARITHABORT’
我使用SET ARITHABORT ON;在我插入之前但仍然有此错误.
解决方法
我今天遇到了这个问题并得到了解决.
我在sql server 2008 r2中的列上创建了一个过滤索引,但在插入时会出现此错误.
我看到这个问题没有得到完全回答,因为在每个插入中总是设置ARITHABORT ON可能会很乏味.
我发现一个博客显示数据库兼容级别是问题所在.我将兼容级别从80(2000)更改为100(2008),问题解决了.不确定将兼容级别更改为90是否可以解决此问题,但值得一试.
sql Server兼容级别和命令在此处更改. http://msdn.microsoft.com/en-us/library/bb510680.aspx
如果这不起作用或者您无法更改兼容模式,则可以通过在我在此处讨论的博客中添加触发器来实现另一种解决方法http://chrismay.org/2013/05/23/interesting-problem-with-sql-server-arithabort-filtered-indexes-calculated-columns-and-compatibility-mode-of-80/
请注意,此更改是在测试数据库上完成的,所有应用程序都应在生产中进行此类更改之前进行测试.在更改之前,请确保您的DBA没问题.