SQL Server 2008秒实例login时超时 – 但只有第一次?

这是一个困扰了我一段时间的陌生人。 在我们的某个数据库服务器上login到SQL Server 2008的第二个实例时,出现超时错误:

无法连接到servername \ mssqlserver2。

附加信息:

超时过期。 操作完成之前超时的时间或服务器没有响应。 (Microsoft SQL Server)“)

(这是尝试连接到Microsoft SQL Server Management Studio时的错误消息;其他工具遇到同样的错误,但当然用不同的方式说出来。

立即重新尝试login工作就好了,所以不pipe是什么原因,它是短暂的! 无论用户身份validationtypes如何(在此实例上都支持Windows和SQL Server身份validation方法),都会发生这种情况。 但更奇怪的是,这个服务器上的第一个实例从来没有certificate这个问题。

服务器是一个Windows Server 2008 R2虚拟服务器,托pipe在Microsoft Hyper-V(主机同样是Server 2008 R2)。 服务器有2GB的内存,似乎经常使用90%的内存可能是这个问题的原因? 我可以看到第二个实例 – 这个实例并不经常被使用 – 被交换到磁盘,然后花费很长时间回到内存中,以便及时响应连接请求,但是我宁愿多于在我为这台服务器安排停机时间之前(我们经常使用第一个实例),然后在盲目地投入额外的资源,希望这个问题消失之前,我只能自己的预感。

解决了!

事实certificate这个问题是防火墙问题,虽然为什么它会在第二次尝试中工作对我来说仍然是一个谜 – 一般来说,如果防火墙阻碍了它,阻止它,它不会神奇地允许第二个试图通过…

无论如何,事实certificate,第一个实例被configuration为侦听TCP端口1433,然而第二个实例被configuration为59196(或类似的东西)“TCPdynamic端口”。 关于一个单一的港口是如此“dynamic”是超出我的,但无论如何。

将防火墙规则添加到Windows防火墙以允许连接到该端口立即解决了我的问题。 然后,我进一步说了一下:不是使用这个“dynamic”端口,而是改为使用TCP端口1432(1434用于pipe理连接,或类似的东西),并修改防火墙规则以允许该端口代替。

可以在SQL Serverconfigurationpipe理器 – > SQL Servernetworkingconfiguration – > TCP / IP属性 – > IP地址中find端口configuration。 在这个选项卡下,我只是修改了IPAll部分的设置,忽略了无数的IPn部分(这些部分都被禁用了):删除“TCP Dynamic Ports”条目,并为“TCP Port”input1432。 更改这些设置需要重新启动SQL Server实例。