查询在本地运行得非常快,在远程机器上非常慢

我们有一个查询,从SQL Server Management Studio从远程计算机运行它需要24-38秒的时间才能运行,但使用SQL Server Management Studio从本地运行时运行时间小于1秒。

SQL Server 2005 Windows Server 2003 R2标准版虚拟化在VMWare 3.5.0瓦特/ 4GB的RAM和一个单一的CPU。

我还会补充说,同样的查询也是从应用程序运行缓慢的,而不仅仅是从SQL Mgmt Studio。

任何想法,为什么它可能在本地运行速度超快,但在远程机器超慢?

编辑:是否SQL Server处理结果caching不同? 我问这个问题是因为软件导致问题的供应商将索引添加到引起结果显示的表中,因为他们在本地进行了远程访问。 我曾经使用SQL事件探查器来查看查询完成的时间,而远程的查询完成时间更长,现在他们似乎在添加索引之后要花费相同的时间。

我的期望将是下列之一:

  • 大量的数据正在被返回,数据穿越networking只是花了很长时间。
  • 性能问题与远程机器。

单击查询窗口“包含客户端统计信息”中的工具栏button,查看运行查询后返回的内容。 你可以看到从服务器接收了多less字节,执行时间等

Client Execution Time 12:08:38 Query Profile Statistics Number of INSERT, DELETE and UPDATE statements 0 Rows affected by INSERT, DELETE, or UPDATE statements 0 Number of SELECT statements 3 Rows returned by SELECT statements 15 Number of transactions 0 Network Statistics Number of server roundtrips 3 TDS packets sent from client 3 TDS packets received from server 7 Bytes sent from client 240 Bytes received from server 21306 Time Statistics Client processing time 31 Total execution time 61093 Wait time on server replies 61062 

编辑:

您的评论说,它只返回39行,所以可能不是客户端和服务器之间的数据传输。

我会考虑运行SQL Profiler针对过滤到您的客户端的服务器,看看可能会发生什么。 以下是关于使用SQL Profiler的一些精彩文章:

默认情况下,SQL Server在进行本地连接时使用共享内存,而在远程连接时使用TCP / IP或命名pipe道进行连接。 要testing它是否与正在使用的协议有关,请尝试在本地连接,但强制使用TCP / IP或命名pipe道。

  1. 打开pipe理工作室
  2. 点击连接 – >数据库引擎
  3. 点击选项
  4. 在连接属性下更改networking协议

你的查询仍然运行速度慢吗?

另外当你远程连接时,初始连接速度很慢,连接速度很慢? 我的想法是,它可以是身份validation。

当您尝试以另一种方式连接到本机时,性能如何,如远程桌面等? 如果一切都很慢,当你试图到达机器,你可能有一些networking问题,如破碎的网卡/电缆,路由器/防火墙问题等(我已经看到在千兆网卡上有几个10Mbit模式的服务器: D)

当您从本地服务器运行时,您是否使用相同的用户? 它是一个AD帐户或SQL帐户?

在Sys.dm_os_waiting_tasks中查找waittypes

http://technet.microsoft.com/en-us/library/cc966413.aspx