日期:2014-05-17  浏览次数:20463 次

provider: 命名管道提供程序, error: 40
紧急求助:
我现在的情况如下:
现在有3台服务器,假如分别是:服务器A,服务器B,服务器C
服务器A安装了SQL Server 2008上
服务器B和服务器C的IIS都部署了3个asp.net站点(负载均衡),假如分别为:站点1、站点2、站点3.
3个站点都访问的是服务器A上的数据库,使用相同的链接字符串。但是分别是3个不同的应用程序池。
3个站点都是使用相同的访问数据库组件(dll)。

问题:
站点A访问一切正常。但是站点B和站点C经常报连不上数据库的异常(下面有详细信息)。需要重启应用程序池才能正常。重启之后,只能保持一段时间内正常。。过段时间后又重新出现相同的问题。。

错误信息:
在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) 

sql?server error:?40 无法连接数据库 iis asp.net

------解决方案--------------------
如果是要重启连接池才生效的话,估计你的连接池缓存太久之类的
------解决方案--------------------
你的B和C服务器连接数据库服务器,都用的命名管道吗?

检查一下你的sql server的TCP/IP协议是否打开,最好用这个,访问的时候指定端口就可以。

你把你的连接数据库的字符串贴出来看看
------解决方案--------------------
也可以先从windows的错误日志着手,然后从sqlserver的错误日志,还有IIS日志(如果有)去找问题