SQL Server连接的初始连接速度很慢.为什么?

use*_*677 13 c# connection ado.net sql-server-2005

我遇到了在两个站点安装了C#应用程序的情况,其中与SQL Server的初始连接非常慢.我编写了一个测试应用程序来验证减速发生的位置,它是在第一个SQLConnection.Open语句中.通过命名管道建立与服务器的连接大约需要41秒.我们认为这可能是一个DNS问题,但它使用TCP/IP连接速度一样慢.建立初始连接后,将连接合并,应用程序正常响应.工作站和服务器都是运行Windows 7 Pro,Core 2 Duo 3.16 Ghz和4 gig Ram的不错的机器.我在微软论坛上找到了以下文章:

http://social.msdn.microsoft.com/Forums/en/windowscompatibility/thread/f295994c-5812-4e46-8ac9-f05471d4dd54

关闭LLMNR协议确实将初始连接时间缩短了大约一半到21秒.但是,这仍然需要很长时间才能获得与SQL Server的初始连接.唯一与我们的标准略有不同的是,在这种情况下,DNS是通过路由器完成的,而不是实际的服务器.到目前为止,这只发生在两个地方,其他地方没有任何问题.任何帮助,将不胜感激.

谢谢你,丹尼斯

小智 8

在连接字符串上的服务器前面添加 np:

这变为Server=np:server\instance并强制命名管道而不是默认的TCP.

我可能在TCP之前改变了使用命名管道的优先级...但我不想在服务器上弄乱它.


Har*_*wok 5

我看到了类似的问题,但不确定它和你的一样.在我的例子中,不只是C#程序进行SQL连接的速度很慢.这是连接到SQL服务器的任何工具也经历了缓慢.此外,一旦初始连接到SQL服务器,任何后续连接都可以使用一段时间.

原因是SQL服务器使用了许多托管程序集.它正在尝试验证分配给程序集的cerfiticates.它连接crl.microsoft.com.我的SQL服务器没有互联网连接.所以,它等待超时.

解决方案是让我的SQL服务器具有Internet访问权限或禁用CRL检查.您可以转到SQL Server计算机.选择工具> Internet选项>高级.检查是否选中了安全性节点下的发布者证书撤销.如果已选中,请取消选中它.


use*_*677 4

我尝试指定连接字符串,其中集成安全性 = false(意味着用户 ID 和密码位于连接字符串中)和加密 = false(只需 100% 确定未使用 SSL 加密)。这些规范似乎没有帮助,我无法使用 TCP/IP 网络库 (NetworkLibrary = "dbmssocn") 显式获得连接。这可能与服务器防火墙和端口未打开有关。我切换回命名管道,并将命名管道网络库规范放入连接字符串中(NetworkLibrary =“dbnmpntw”)。进行此更改后,连接立即建立。