[08001] [Microsoft] [SQL Server Native Client 11.0] 命名管道提供程序:无法打开与SQL Server的连接
提出问题
你是否遇到过以下的问题呢?使用Navicat等第三数据库管理工具连接SQL Server时出现如下图的错误:
燃鹅,用MSSM连接却可以连接,从后面我们知道,第三方数据库管理软件一般通过TCP/IP来连接管理的。而MSSM就是采用的Shared Memory来进行连接管理的,因此不走TCP/IP这条道,那么就可以连接并进行管理。
在配置中,从客户端协议顺序来看,可以得知。
说了那么多,那么怎么解决呢?
-
保证所有SQL Server相关服务处于运行状态。 当然,如果你使用MSSM可以连接管理的话,我想你相关服务应该是没问题的。
-
打开SQL Server配置管理器,展开 SQL Server 网络配置 - xxxx 的协议(注:xxxx 为你SQL Server名称),在右侧协议列表中,双击打开 TCP/IP属性, 首先保证状态为 是。 在IP地址选项卡一栏,下拉到最后一项设置,名为 IPALL,此表示所有本地IP地址的统一设置。此时,在 TCP动态端口 填入 1433 (注:SQL Server 默认端口是 1433 ,当然你可以指定其它合法不被占用端口也行,不过连接时需要指定端口,因此不建议修改成其它端口号)
- 修改完成后,点击确定,会提示重启所有相关SQL Server服务生效,那么就重启所有SQL Server服务吧。
-
怎么样?此时用Navicat等第三方工具连接SQL Server是不是成功了呢。
如果还不行呢?
如果还不能进行连接管理的话。。。好吧,其实我这样设置后,我也是登录不进去,不管是用Windows身份验证登录还是使用SQL Server身份验证都不行。那我怎么解决呢?请看:
- 在 服务器属性 - 安全性选择页,右侧 服务器身份验证 下,虽然 我之前使用的就是 SQL Server 和 Windows身份验证模式,不过也之前也用 MSSM 管理工具分别使用了两个身份验证模式是可以的,但是用第三方工具就是不可以。因此,在此处我将服务器身份验证修改成Windows身份验证模式,重启相关SQL Server服务,然后再使用Navicat第三方管理工具连接并使用Windows身份验证模式进行登录,发现竟然可以连接成功了!
- 然后我又切换回SQL Server和Windows身份验证模式,重启相关SQL Server服务后,再使用Navicat第三方管理工具连接并使用SQL Server身份验证模式进行登录,也同样成功连接了。
- 因此,就搞定了啦!
附录
下面是一个关于JBDC访问SQL Server数据库的小摸索,比如当我使用SQL Server身份验证模式访问新建的数据库stu时,出现了以下错误:
同样的,我使用Windows身份验证模式登录访问这个stu表时,却是可以正常访问的。
那么问题在哪呢?
好吧,我记起来了,我新建stu这张表是以Windows身份验证模式登录的,所以现在我以SQL Server身份验证登录并对其进行访问是行不通的,也是合情合理的。
如果要解决这个问题呢,那就找到相关数据库(即stu数据库),右键 - 属性,在数据库属性 - 权限 ** 选项卡下,对用户或角色为 public 的这个角色进行相关权限的授予**。
完成后,确定修改。再次访问时,就可以访问啦。