Nir*_*man 5 .net c# sql-server performance ado.net
最近,我们发现性能不佳的页面之一是由于 SQL Server 实例和 SQL 客户端(即 ADO.NET)之间 ARITHABORT 选项设置的差异造成的。我们可以通过在 SQLConnection 打开后立即执行以下命令来解决此问题 -
SqlCommand comm = new SqlCommand("SET ARITHABORT ON", objSqlConn);
comm.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)
互联网上有很多文章说,当查询从应用程序执行需要很长时间,但在 SSMS 中执行速度很快时,那么很可能是索引不良、参数嗅探或 ARTHABORT 选项差异的问题。就我而言,这是第三个,我也可以通过检查查询执行计划来重新确认。
虽然问题已经解决,但我很好奇为什么我需要显式运行此命令以使查询性能与 SQL Server 同步。
另外,如果多年来这是众所周知的事情,那么 Microsoft 一定考虑过将此选项默认设置为 SqlConnection 的 ON。毕竟,SQL Server 和.NET 客户端都是他们自己的产品。
知道如何在使用 ADO.NET 执行查询时默认设置 SET ARITHABORT ON 吗?
归档时间: |
|
查看次数: |
10310 次 |
最近记录: |