最近,我们发现我们性能不佳的页面之一是由于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?
答案 0 :(得分:-1)
所有这些都涵盖here