我们在网络应用程序中随机出现此错误。
System.Data.SqlClient.SqlException:A 与网络相关或特定于实例的 建立一个错误时发生错误 连接到SQL Server。服务器 没找到或无法访问。 验证实例名称是否为 正确和SQL Server是 配置为允许远程 连接。 (提供者:命名管道 提供者,错误:40 - 无法打开 连接到SQL Server)
如果我们偶尔得到错误但是间歇性地提出其他事情正在发生,那将是有意义的。
有没有人经历过这个? 有什么建议或理论吗?
谢谢!
答案 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错误在数据库错误的同时可靠地发生,所以我们知道它是网络硬件而不是更高级别的任何东西。
更换开关修复了一切。