1

我正在select * from table对 Microsoft SQL Server 2005 运行一个简单的查询。该表有大约 41000 条带有 PK 聚集索引的记录,并且我正在使用 Windows 集成身份验证。

  • 当我使用 Microsoft SQL Server Management Studio 在我的机器上运行它时,查询在大约 1 小时 45 分钟内完成。我试过从网格切换到文本输出,从命令行运行它,SQLCMD也试过 ececuting DBCC USEROPTIONS, DBCC DROPCLEANBUFFERS,DBCC FREEPROCCACHE在查询之前......没有任何改变查询的速度。

  • 当我使用我的凭据从同事的工作站运行它时,查询很快就会正常完成。如果同事使用他们的凭据在我的工作站上运行查询,则查询会非常慢,如上所述。

我已经没有办法解决这个问题了。不知何故,这个问题似乎与我的机器有关,但我无法理解它。还请考虑以下事项:

  • 我检查并确保我的机器(Win7-64 位)上未启用 ODBC 跟踪。我已经使用 Microsoft Management Studio 2008 R2 安装了 SQL Server 客户端工具,这就是我用来查询数据库的工具。
  • 我也用VS2010运行了同样的sql查询,结果是一样的。
  • 我针对同一个表/数据库的副本但在不同的服务器上运行查询,问题仍然存在。
  • 当我运行时select count(*) from table- 查询正常完成,没有延迟。
  • 当我使用 SQL Server Profiler 运行跟踪时,查询只是一个长时间运行的查询 - 我看不到任何异常。
  • 当我在 MS SQL Server Management Studio 中使用文本输出运行查询时,我可以看到在大约 85 条记录的初始缓冲区之后,后续记录一次大量到达大约 400 条记录。例如 85 -> 407 -> 804 -> 1210 -> 1605 -> 1897 -> 2161 -> 2753 -> 3051 -> 3342 -> 3676 -> 4002 等。与同事工作站相比,您可以在其中查看记录数据到达时被绘制为连续流!???
  • 我还比较了我机器上的实际查询执行计划和查询正常运行的另一台机器上的实际查询执行计划——它们看起来是相同的。

谁能理解这里可能出了什么问题?为什么从我的机器上运行它很慢,但它从另一个工作站正常执行?...任何建议的操作步骤来解决这个问题?

提前感谢大家!

4

2 回答 2

1

I found the problem - it was a network adapter driver update. Once I rolled back the driver the query executed as expected no delays! enter image description here

It took me quite a while to nail this down. For the record my network card is "Intel(R) 82579LM Gigabit Network Connection" the rogue network driver came through windows update. My workstation is HP 8200 Elite. After the driver roll back, I downloaded installed the latest network driver from the HP support site and it seems this is the solution - so far I do not have issues with slow running SQL queries :)

于 2012-10-29T11:06:06.243 回答
0

你是硬连线到局域网吗?无线上网?检查您的网络延迟,您提供的一切似乎都正常。ping 您的数据库服务器以检查这一点。

我要检查的下一件事是确保当时服务器或数据库上没有其他任何东西在运行。防病毒软件,测试,任何可能减慢数据库速度的东西。另外,您是否通过虚拟框运行此查询?从本地服务器和远程服务器获取执行计划并并排比较它们。他们应该是一样的。如果不是,你就知道有问题。

还要检查每个连接执行查询时使用的用户 SET 选项。这可以产生影响。如果这些都不是问题,我的下一个猜测将是硬件或配置故障

于 2012-10-25T15:32:37.913 回答