紧急求助:
我现在的情况如下:
现在有3台服务器,假如分别是:服务器A,服务器B,服务器C
服务器A安装了SQL Server 2008上
服务器B和服务器C的IIS都部署了3个asp.net站点(负载均衡),假如分别为:站点1、站点2、站点3.
3个站点都访问的是服务器A上的数据库,使用相同的链接字符串。但是分别是3个不同的应用程序池。
3个站点都是使用相同的访问数据库组件(dll)。
问题:
站点1访问一切正常。但是站点2和站点3经常报连不上数据库的异常(下面有详细信息)。需要重启应用程序池才能正常。重启之后,只能保持一段时间内正常。。过段时间后又重新出现相同的问题。。
错误信息:
在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接)
有知道如何解决这个问题的大神么?求指点。。
重点检查数据库服务器吧~
能具体点么?
@俗人...: 我只是猜测问题出在数据库服务器上;另外就是是不是连接数太多,导致被拒绝?
@幻天芒: 如果是拒绝的话,为什么总是站点B和站点C,而站点A没问题呢?
@俗人...: 你用SQL Profiler监视下看看呢~
你写的有点乱,前面是 站点1、站点2、站点3,后面又变成了 站点A,站点B和站点C。
如果你的 SQL Server 2008 服务器是通过远程连接的,也就是使用 tcp,那么出现网络错误时,提示的内容应该是 10060,而不是 Named Pipes 错误,后者是进程间通信协议,不是跨主机通信手段。
你应该把连接字符串修改为 SQL Server 2008 服务器的 IP 地址,并且使用 Windows 或 SQL 身份认证。
不好意思,写错了。。我已经改了。。
我使用的就是IP地址。你说的Windows 或 SQL 身份认证。是指的是应用程序身份认证?
@俗人...: 连接字符串中的 username 和 pwd.
@Launcher: 除了Windows 和 SQL 身份认证还有其他方式么?这个还真不知道。。我用的是SQL身份验证。。。
@俗人...: 参考下这篇文章:http://blogs.msdn.com/b/sql_protocols/archive/2007/03/31/named-pipes-provider-error-40-could-not-open-a-connection-to-sql-server.aspx
身份认证还有其它方式,你可以看下连接字符串的各项。比如上下文连接,SSPI 等。
另外,连接字符串还能指定使用的 Network Library ,你可以修改为 DBMSSOCN,放弃尝试 Named Pipes.
1.正常情况下,报error:40 有两种情况 sqlserver服务未启动和连接实例名不对
2.看你这情况,还是要看sqlserver配置,是不是真的如幻天芒说的连接数的问题啊,一般都是连接本机开发,对sqlserver配置不熟悉,所以建议从sqlserver配置入手
现在程序都发布了,部署在客户那里,数据库这台服务器没权限远程。。只能在SQL Server资源管理器里连接。