1
我实际上有一个存储过程,用于从我们的数据库存档事务数据并将它们传送到同一服务器中的DW数据库。性能差异:在SSMS中执行存储过程与使用.NET Windows应用程序调用存储过程
当我在SSMS中运行存储过程时,大约需要2-2.5分钟才能完成。但是,当我尝试使用Windows应用程序(其批处理作业)调用存储过程时,大约需要30分钟才能完成(相同的参数)。
我想知道这是否正常,因为我对时差感到惊讶。
谢谢!
我实际上有一个存储过程,用于从我们的数据库存档事务数据并将它们传送到同一服务器中的DW数据库。性能差异:在SSMS中执行存储过程与使用.NET Windows应用程序调用存储过程
当我在SSMS中运行存储过程时,大约需要2-2.5分钟才能完成。但是,当我尝试使用Windows应用程序(其批处理作业)调用存储过程时,大约需要30分钟才能完成(相同的参数)。
我想知道这是否正常,因为我对时差感到惊讶。
谢谢!
这是因为你的sql server在其缓存中存储了2个执行计划。 当你查询SQL Server的时候是否这样做
你ado.net客户端将设置为关闭,并SSMS与此设置为ON时设置ARITHABORT查询,以便SQL Server将有2执行计划。
如果你想在SSMS中相同的条件下,在你的代码,这样做 工具 - >选项 - >查询执行 - > SQL服务器 - >高级 - >取消选中SET ARTHABORT(此参数是无用的)。
你在一个事务中运行它(我读过关于这个最好的文章)?两个查询处于相同的隔离级别吗?是使用任何存储计算的字段(包括xml列)的查询吗? (如果是这样,它很容易受到'SET'配置的影响) –
存储过程正在使用事务... – Franco
实际上它们是运行相同的存储过程...我只是在SSMS中运行它以确保存储过程运行正常...但是当我的应用程序调用存储过程时,它需要30分钟才能完成 – Franco