2014-10-03 109 views
0

我在尝试登录asp.net应用程序时遇到以下错误。错误:40 - 无法打开与SQL Server的连接

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to 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(安全 - >用户 - >用户),我收到以下错误:

enter image description here

我已经检查SQL Server服务,他们正在运行精细。只是想知道在SQL Server中是否有与这个用户有关的事情。

+0

看上去就像是*非常*不对的用户记录... – 2014-10-03 11:55:03

+1

创建一个新用户来测试。如果它有效,那么你知道问题在于那个用户。 – CathalMF 2014-10-03 11:55:56

回答

0

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

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

得到这个消息“服务器侦听端口1433” – user1263981 2014-10-03 13:09:07

+0

@ user1263981,你为什么在连接字符串中有端口3306?您是否试图连接到同一台服务器上的单独命名实例,而不是正在运行的默认命令实例?如果从连接字符串中删除端口号,我希望连接工作。 – 2014-10-03 13:33:18

+0

我从来没有提到过关于3306 – user1263981 2014-10-03 14:13:02

0

命名管道协议(见错误)只适用于同一台机器上的连接,这意味着(可能)是SQL Server上未启用外部通信TCP/IP协议

错误的另一个可能的原因是sql server的名为实例的;在你的连接字符串你把没有实例名称的服务器的IP地址(最好使用机器名称并把IP放在DNS或主机文件中),这意味着你的SQL服务器没有命名实例是正确的?用于检查命名实例在服务上查看。

其他可能的问题可能:

  • 防火墙(服务器和客户端上),
  • 的SQL Server侦听端口。
  • 试图连接到SQL Server(错误的密码,禁用,对DB和/或SQL实例没有权限)
0

我有同样的问题,由于某种原因,我不得不添加标准用户SQL端口(1433),然后一切正常。你的情况,这将是:

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