我实际上有一个存储过程,用于存档数据库中的事务数据并将它们传输到同一服务器中的DW数据库。
当我在SSMS中运行存储过程时,大约需要2-2.5分钟才能完成。但是,当我尝试使用Windows应用程序(它的批处理作业)调用存储过程时,完成(相同的参数)大约需要30分钟。
我想知道这是否正常,因为我对时差感到惊讶。
谢谢!
答案 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(我读过的最好的文章)