如何使SqlConnection默认使用“SET ARITHABORT ON”?

时间:2018-02-08 13:28:38

标签: c# .net sql-server performance ado.net

最近,我们发现我们性能不佳的页面之一是由于SQL Server实例和SQL客户端(即ADO.NET)之间ARITHABORT选项设置的不同。 我们可以在SQLConnection打开后立即执行以下命令来解决此问题 -

SqlCommand comm = new SqlCommand("SET ARITHABORT ON", objSqlConn);
comm.ExecuteNonQuery();

互联网上有很多文章说当查询从应用程序执行需要很长时间,但在SSMS中执行很快时,很可能是索引不良,参数嗅探或ARTHABORT选项差异的问题。就我而言,这是我可以通过检查查询执行计划再次确认的第三个。

虽然问题已解决,但我很想知道为什么我需要显式运行此命令才能使查询性能与SQL服务器同步。

此外,如果它是多年以来已知的东西,那么Microsoft必须考虑将此选项默认设置为ON,以用于SqlConnection。毕竟,SQL Server和.NET客户端都是他们自己的产品。

在使用ADO.NET执行查询时,默认情况下如何使SET ARITHABORT为ON?

1 个答案:

答案 0 :(得分:-1)

除非有人在服务器实例中更改内容,否则默认情况下应启用arithabort。所以要做的第一件事就是问你的dba。请注意,这是一个连接设置,因此在打开连接时设置它是一种更有效的方法(这意味着提供自己的打开方法)。

所有这些都涵盖here