错误:40 - 无法打开与SQL Server的连接

时间:2014-10-03 11:50:58

标签: c# asp.net sql-server sql-server-2008-r2 connection-string

尝试登录asp.net应用程序时出现以下错误。

  

建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)

在我的web.config文件中,连接字符串类似于

<add name="DefaultConnection" 
     connectionString="Server=1.1.1.1; Database=XYZ; Uid=user; Pwd=pswd;" 
     providerName="System.Data.SqlClient" />

Web和数据库服务器是分开的。同一个Web服务器上有其他网站指向同一个数据库服务器上的不同数据库,工作正常。

当我双击SQL Server 2008 R2中的用户名(安全性 - &gt;用户 - &gt;用户)时,出现以下错误:

enter image description here

我检查过SQL Server服务,运行正常。只是想知道在SQL Server中是否与该用户有任何关系。

3 个答案:

答案 0 :(得分:0)

此错误与用户无关。检查以确保通过SQL Server配置管理器实用程序在SQL Server上启用远程连接,并在防火墙上打开端口1433。您可以使用TELNET或下面的Powershell命令测试端口连接。

1433 | % { echo ((new-object Net.Sockets.TcpClient).Connect("YourServerName",$_)) "server listening on TCP port $_" }

答案 1 :(得分:0)

命名管道协议(请参阅错误)仅适用于同一台计算机上的连接,这意味着(可能)在SQL Server上未启用 tcp / ip protocol 用于外部通讯。

该错误的另一个可能原因是sql server的命名实例;在您的连接字符串上,您将服务器的IP地址设置为没有实例名称(更好地使用机器名称并将IP放在DNS或hosts文件中),这意味着您的sql server没有命名实例是正确的?要检查命名实例,请参阅服务。

其他可能的问题可能是:

  • 防火墙(在客户端和服务器上),
  • sql server的监听端口。
  • 尝试连接到sql server的用户(密码错误,已禁用,对db和/或sql实例没有权限)

答案 2 :(得分:0)

我遇到了同样的问题,由于某种原因,我不得不添加标准SQL端口(1433),然后一切正常。在你的情况下:

<add name="DefaultConnection" 
 connectionString="Server=1.1.1.1,1433; Database=XYZ; Uid=user; Pwd=pswd;" 
 providerName="System.Data.SqlClient" />