SQL服务器查询真的很慢只有在第一次运行

有点奇怪的问题…当我重新启动我的机器后第一次启动我的.NET应用程序时,SQL Server查询是非常缓慢的…当我暂停debugging器,我注意到它挂在从查询获取响应。 这只发生在连接到远程SQL服务器(2008)时…如果我连接到本地机器上的一个,那就好了。 此外,如果我重新启动应用程序,即使远程SQL服务器,它的工作也很快,后续运行也很好。 唯一的问题是当我重新启动机器后第一次连接到远程SQL服务器。 更重要的是,我甚至已经注意到与连接到远程SQL服务器的第三方应用程序(也称为.NET)完全相同的行为。

另一个信息…这只是开始发生,因为我升级我的机器从XP到Win7(64位)。 另外,升级到Win7的我的团队中的其他开发人员也看到了相同的行为(包括我们正在开发的应用程序和第三方.NET应用程序)。

(从https://stackoverflow.com/questions/2014814/sql-server-queries-are-really-slow-only-on-first-run复制)

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协商。

我会尝试通过添加SSPI = NTLM到您的连接string强制NTLM。 如果你不再获得最初的减速,这可能指向你的问题。

你是通过IP还是主机名连接到这台机器?

当您仅通过IP地址专门寻址本机时会发生什么? (通过连接string或SQL Management Studio)

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

hosts文件中添加一个条目到您的SQL 2008机器。 如果这样可以在重新启动后提供快速的性能,那么您正在查看名称parsing问题。