繁体   English   中英

我应该在SQL Server 2014中设置ARITHABORT

[英]Should I set ARITHABORT in SQL Server 2014

我正在查看一段时间之前编写的一些代码,在调用存储过程之前,在数据库帮助器中将它们设置为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上也是如此。

如果您的数据库较旧并且使用升级脚本推迟了数据,则会发生这种情况。 在过去,默认设置不是“开启”,因此较旧的数据库可能仍然使用错误的默认值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM