为什么我会间歇性地得到这个错误? “服务器未找到或无法访问”

时间:2009-06-23 14:40:18

标签: asp.net sql sql-server-2005 ado.net

我们在网络应用程序中随机出现此错误。

  

System.Data.SqlClient.SqlException:A   与网络相关或特定于实例的   建立一个错误时发生错误   连接到SQL Server。服务器   没找到或无法访问。   验证实例名称是否为   正确和SQL Server是   配置为允许远程   连接。 (提供者:命名管道   提供者,错误:40 - 无法打开   连接到SQL Server)

如果我们偶尔得到错误但是间歇性地提出其他事情正在发生,那将是有意义的。

有没有人经历过这个? 有什么建议或理论吗?

谢谢!

4 个答案:

答案 0 :(得分:6)

服务器可能太忙而无法响应 - 您使用的是SQL Express还是Workgroup Edition?此外,该服务器一次有多少个连接?这个错误是在某个时间在所有连接上发生的,还是某些连接被拒绝而其他连接同时成功?

另外,如果你做一个“PING -t Servername”并观看它,每次ping都会回来,还是会丢失一些?这可能是网络中断的指示,也可能导致此错误。

答案 1 :(得分:5)

我们之所以这样,是因为防火墙太多了:客户越远(比如香港或纽约,我们在瑞士)发生的次数越多。伦敦:很少。瑞士:永远不会。我们(通过我们的数据库工程和MS帮助)向我们解释了由于路由器和防火墙导致的延迟有时会破坏Kerberos和/或相关时间。

修复:使用连接字符串中的端口。这避免了到端口1434的往返以枚举实例。我们已经使用过FQDN。

示例:server.domain.tld \ instance,port

YNNV当然,但它对我们有用

答案 2 :(得分:4)

我之前在另一个位置访问远程服务器时已经看过了。我怀疑这是由于两个站点之间的路由器配置,我们应该说,cludgy。由于网络配置或硬件坏,你完全有可能得到它,但是在你用尽其他许多可能性之前我不会跳到那个结论。

答案 3 :(得分:4)

我有完全相同的问题;我们也得到了这个:

  

System.Data.SqlClient.SqlException:An   建立时发生错误   与服务器的连接。什么时候   连接到SQL Server 2005,这个   失败可能是由于这一事实造成的   在SQL Server的默认设置下   不允许远程连接。   (提供者:命名管道提供商,   错误:40 - 无法打开   连接到SQL Server)

和这一个:

  

System.Data.SqlClient.SqlException:A   发生了传输级错误   当发送请求时   服务器。 (提供者:TCP提供者,   错误:0 - 现有连接是   被远程主机强行关闭。)

第一个特别奇怪,因为我们没有使用命名管道。

无论如何,事实证明问题是一个错误的开关。

我在应用程序服务器和数据库之间来回设置计划任务之前进行了app-and db-level故障排除(使用服务器的IP地址和NETBIOS名称,以防问题是netbios名字查询)。

ping错误在数据库错误的同时可靠地发生,所以我们知道它是网络硬件而不是更高级别的任何东西。

更换开关修复了一切。