我最近擦除并重新安装/配置了我的网络和数据库服务器的所有组件。我正在运行IIS 6,.NET 3.5,SQL Server 2005.这两个服务器是同一域中的独立VM。我的网络应用程序功能完美... 90%的时间。但是我偶尔会收到此错误或通用运行时错误:
System.Data.SqlClient.SqlException:从服务器接收结果时发生传输级错误。 (提供者:TCP提供者,错误:0 - 信号量超时期限已过期。)
你们能给我一些关于从哪里开始排除故障的线索吗?我真的觉得我在IIS中遗漏了一些东西。
提前致谢!
答案 0 :(得分:14)
经过几个小时的故障排除并与我的托管组一起坐在手机上后,他们发现他们的网络配置存在问题。在我的测试过程中,其中一个VM突然找不到域名,并且对另一个盒子的IP进行简单的“ping”会偶尔超时,解决方案变得更加清晰。这完全排除了DNS。托管组在他们的最终应用了正确的配置后,应用程序一直稳定且快速!
感谢大家的帮助!
答案 1 :(得分:3)
一些指针是here。基本上,错误是由网络层引发的,而SQL服务器只是报告它。
希望有所帮助。
答案 2 :(得分:2)
您可以仔细检查数据库服务器上的负载吗?我们确实偶尔在我们的开发环境中获取它们,但从未在prod环境中获得它们。
答案 3 :(得分:2)
我首先要确保运行最新版本的虚拟机网络驱动程序。
听起来你的2 VMS之间的通信失败了。尝试在两台计算机之间打开TCP套接字,看看它是否在一定时间后死亡。
答案 4 :(得分:0)
检查存储过程是否有任何行 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
对我来说这就是问题
答案 5 :(得分:0)
Late to the game, but I was getting this same error with a .NET web app/MS SQL. Site hosted in IIS on GoDaddy VPS, hosting has multiple IPs, DB hosted at Azure.
I believe my problem was (idiot!), I simply forgot to put the GD site's dedicated IP addresses from GD into the Azure firewall for the SQL server. For some strange reason the traffic gets to/from GD/Azure outside of the actual IP address for the website (the IIS binding addresses) and works.
But more often than not the actual IIS binding addresses are the ones calling out to Azure to interact with the SQL services. I corrected the firewall settings on Azure to include the correct IPs from GoDaddy and (knock on wood) the semaphore error seems gone now.
In other words, before you start looking for big problems, start simple and be sure to check easy things like network/firewall settings.
答案 6 :(得分:0)
我会发布我的经验,以防万一有一天有人能帮上忙;)
在年底,只需尝试使用我的手机从很远的地方远程连接到我们的服务器即可。我注意到我无法通过远程桌面(黑屏)登录到一台Windows服务器,也无法从Windows应用程序连接到同一服务器。
当我从手机切换到其他连接(通过NightHawk M1移动路由器)后,一切都很好。
正如我所阅读的,主要是关于网络问题,所以请不要恐慌并尝试在其中找到有罪感。
希望有帮助, R