SQL 服务器查询仅在首次运行时才非常慢

SQL 服务器查询仅在首次运行时才非常慢

有点奇怪的问题...当我重新启动计算机后第一次启动 .NET 应用程序时,SQL Server 查询真的很慢...当我暂停调试器时,我注意到它挂在获取查询响应上。这仅在连接到远程 SQL 服务器 (2008) 时发生...如果我连接到本地计算机上的一个,那就没问题了。此外,如果我重新启动应用程序,它运行得很快,即使在远程 SQL 服务器上也是如此,后续运行也很好。唯一的问题是当我重新启动计算机后第一次连接到远程 SQL 服务器时。更重要的是,我甚至注意到第三方应用程序(也是 .NET)也存在同样的行为,它也连接到远程 SQL 服务器。

另一条信息...自从我将计算机从 XP 升级到 Win7(64 位)后,这种情况才开始发生。此外,我团队中升级到 Win7 的其他开发人员也看到了同样的行为(我们正在开发的应用程序和第三方 .NET 应用程序)。

(摘自https://stackoverflow.com/questions/2014814/sql-server-queries-are-really-slow-only-on-first-run

答案1

Windows Vista 和 Windows 7 与 SQL Server 2008 的连接方法与 XP 和 SQL Server 2008 确实有所不同。

当您从 Vista 或 Windows 7 连接到运行 SQL 2008 的 Windows 2008 服务器时,Windows 会尝试使用安全支持提供程序接口 [SSPI] 协商连接。您偶尔会看到如下问题:http://support.microsoft.com/kb/811889

我猜测,此连接的协商存在延迟。正如您在知识库文章中看到的,有多种方法可以强制连接仅使用标准 NTLM 协商。

我会尝试通过添加来强制使用 NTLM韋斯特光線=NTLM到您的连接字符串。如果您不再看到初始速度降低,则这可能表明存在问题。

答案2

您是通过 IP 还是主机名连接到该机器?

当您仅通过 IP 地址专门寻址此机器时会发生什么?(通过连接字符串或 SQL Management Studio)

答案3

检查您的 SQL 客户端连接设置(首先检查 TCP/IP?)

在您的文件中添加一个 SQL 2008 机器条目hosts。如果这在重启后为您提供了快速性能,则您正在查看名称解析问题。

相关内容