我应该在SQL Server 2014中设置ARITHABORT吗



我正在数据库助手中查看一些不久前编写的代码,在调用存储过程之前,它们设置ARITHABORT ON

据我所知,如果ANSI_Warnings为ON,则2005之后的SQL Server版本不需要此选项。

我还需要设置这个吗?它是否提供性能优势?

编辑1:根据这篇文章,我不需要设置它,但我找不到另一个确切的答案。

如果您查看SET ARITHABORT,将ANSI_WARNINGS设置为ON将自动将ARITHABORT设置为ON,并且兼容级别为90或更高(SQL Server 2005或更高版本):

当数据库兼容性级别设置为90或更高时,将ANSI_WARNINGS设置为ON会隐式地将ARITHABORT设置为ON。如果数据库兼容性级别设置为80或更早,则ARITHABORT选项必须明确设置为ON。

兼容级别为80时,您必须手动设置。

也有可能是您的软件在打开连接时将其设置为关闭,而唯一的解决方案是将其添加到过程中。

升级到兼容级别90或更高级别后,您应该运行:

DBCC FREEPROCCACHE

如果将删除执行计划并重新编译过程。

在创建新计划之前也可以同时运行这两个命令:

DBCC UPDATEUSAGE(db_name);
EXEC sp_updatestats;

我认为这个数据库可能是旧的(SQL Server 2000或更早版本),运行它可能也很好:

DBCC CHECKDB WITH DATA_PURITY;

DBCC CHECKDB将检查数据库及其使用的数据(类型),并确保所有内容都符合您的新版本和兼容级别。

在我们的数据库中,我们有一些SP运行的速度要快得多,甚至在后来的SQL Server上也是如此。

如果您的数据库较旧,并且使用升级脚本进行了多次推送,则会发生这种情况。在以前的日子里,默认值不是"ON",因此旧的数据库可能仍然使用坏的默认值。

最新更新