我有一个 .net web 应用程序,它调用在另一台服务器上运行的 sql server 2008。从最近几周开始,每隔 4 或 5 天,web 应用程序与 sql server 的连接就会出现问题。web 应用程序间歇性地无法连接到 sql server。在 web 应用服务器的事件查看器中,记录了以下消息:
建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确以及 SQL Server 是否已配置为允许远程连接。
(提供程序:命名管道提供程序,错误:40 - 无法打开与 SQL Server 的连接)位于 System.Data.SqlClient.SqlInternalConnection
尝试从 Web 应用程序服务器创建到 SQL 服务器的 ODBC 连接也会失败,并显示类似的消息:
Connection failed:
SqlState:'01000'
Sql server error: 68
[Microsoft ODBC Sql server driver][DBNETLIB] ConnectionOpen(Connect())
Connection failed:
SQLState:'08001'
Sql server error: 17
[Microsoft ODBC sql Driver]{DBNETLIB] Sql server does not exist or access denied
但是其他计算机(Web 应用服务器除外)仍然能够调用相同的 SQL 服务器实例,并且还能够创建到 SQL 实例的 ODBC 连接。当出现连接问题时,我还可以从 Web 应用服务器成功 ping 到 SQL 服务器。
奇怪的是,Web 应用程序不会永久失去连接。每隔几分钟,某个请求将能够连接到 SQL Server,但随后它将再次失败。回收 Web 应用程序池或重新启动 IIS 无法解决问题。但是,在 Web 服务器启动后,问题会消失几天,但稍后又会再次出现。
您知道是什么原因导致此问题吗?谢谢
答案1
我们曾经遇到过类似的事情,结果发现相关服务器上的网络驱动程序存在问题。结果是它可以工作一段时间...然后就断开连接了。也许检查一下双方的固件/驱动程序是否都是最新的?