我们有一堆VB6应用程序可以访问两个不同的数据库服务器(32位Windows 2003,一个SQL Server 2000,一个SQL Server 2005)。大约每十分钟左右,我们会遇到一些错误:
[Microsoft] [ODBC SQL Server驱动程序]超时已过期 [Microsoft] [ODBC SQL Server驱动程序] [DBNETLIB] SQL Server不存在或访问被拒绝。 [Microsoft] [ODBC SQL Server驱动程序] ConnectionRead()
随机时间在十几台不同的计算机上发生这种情况。我们也有IP电话,所有IP电话都通过相同的网络,并没有任何问题。我们还可以将VNC转换为用户计算机并重现他们所获得的错误,但VNC仍然可以继续工作。电子邮件也有效。它似乎是导致该问题的SQL Server的ODBC连接。我们的两个SQL Server都会发生错误。我们已经搜索谷歌,但未能提出解决方案。有什么我们可以尝试诊断问题吗?那有什么问题吗?
我们在服务器或客户端上都没有内部防火墙。我们通过TCP / IP通过服务器的DNS名称连接(也有尝试过的IP地址)。
一台服务器具有Windows 2003 SP2,另一台服务器没有。
奇怪的是,它已经运行了好几年,现在突然发生了这些错误。在很长一段时间内,这些服务器上没有任何变化。这让我们相信这是一个糟糕的转变,但这似乎不太可能,因为没有别的东西(电子邮件,电话,vnc,文件服务器等)都可以毫无问题地工作。
答案 0 :(得分:2)
请参阅此Microsoft知识库文章。
Some problems occur after installing Windows Server 2003 SP2
我还建议您切换到OLE DB提供程序。根据我的经验,它比ODBC更快,也更可靠。
向下滚动到:SQL Native Client OLE DB提供程序
答案 1 :(得分:0)
您使用的是非默认实例吗?或者你有内部防火墙吗?
我们更改为“server.fqdn.tld \ instance,port”以避免内部防火墙后面的客户端出现这种确切的(IIRC)间歇性连接问题。
只有SQL连接受到影响。
答案 2 :(得分:0)
我们从未弄清楚为什么会这样。我们将服务器升级到SQL Server 2008,并且错误消息已停止。
答案 3 :(得分:0)
我最近遇到了一个非常类似的问题posted it here。
ScottE找到了解决方案。