【发布时间】:2011-02-14 21:52:37
【问题描述】:
这很奇怪,但我希望有人能帮助我。
我有一个存储过程调用,它需要大约 42 秒才能运行 - 当从通过 ODBC 连接连接的应用程序调用时。但是,如果我在 SSMS(Sql Server Management Studio)中运行相同的调用,则执行只需 10 或 15 秒……正如跟踪记录的那样。
这似乎不是网络问题。我只将大约 1200 条记录传回给客户端——无论如何,我给你的时间直接来自跟踪持续时间字段……所以 SQL Server 处理同一个调用的时间要长 3 到 4 倍——当通过 ODBC 调用完成。我可以一遍又一遍地重现这一点。更有趣的是,ODBC 调用的读取和写入(从跟踪中获取)略高,但 CPU 使用率是 SSMS 调用的 3 或 4 倍。
还有其他存储过程被称为同一进程的一部分,它们似乎不会以相同的方式受到影响......或者至少不会受到相同程度的影响。
我们使用的是 SQL Server 2005
对这里发生的事情有什么想法吗?
【问题讨论】:
-
可能是参数嗅探。检查两个执行计划是否存在差异。 SSMS 可能会有一些不同的
set选项,这意味着它不会从其他连接共享计划,而是会生成一个可能更适合该组参数的新计划。
标签: sql-server performance sql-server-2005 stored-procedures odbc