性能差异:使用.NET Windows应用程序在SSMS中执行存储过程与调用存储过程

时间:2012-11-01 09:20:14

标签: .net stored-procedures

我实际上有一个存储过程,用于存档数据库中的事务数据并将它们传输到同一服务器中的DW数据库。

当我在SSMS中运行存储过程时,大约需要2-2.5分钟才能完成。但是,当我尝试使用Windows应用程序(它的批处理作业)调用存储过程时,完成(相同的参数)大约需要30分钟。

我想知道这是否正常,因为我对时差感到惊讶。

谢谢!

1 个答案:

答案 0 :(得分:0)

这是因为你的sql server在其缓存中存储了2个执行计划。 当您查询SQL Server执行此操作时

  • 缓存中是否有当前设置的执行计划?
  • 如果没有使用提供的参数创建一个用于猜测最佳查询计划

您的ado.net客户端将查询设置ARITHABORT设置为Off和SSMS,并将此设置为On,以便SQL Server将有2个执行计划。

如果您希望在SSMS和代码中处于相同状态,请执行此操作 工具 - >选项 - >查询执行 - > SQL Server - >高级 - >取消选中SET ARTHABORT(此参数无用)。

来源:http://www.sommarskog.se/query-plan-mysteries.html(我读过的最好的文章)