Loading

[08001] [Microsoft] [SQL Server Native Client 11.0] 命名管道提供程序:无法打开与SQL Server的连接

[08001] [Microsoft] [SQL Server Native Client 11.0] 命名管道提供程序:无法打开与SQL Server的连接


提出问题

你是否遇到过以下的问题呢?使用Navicat等第三数据库管理工具连接SQL Server时出现如下图的错误:

【08001】无法打开与SQL Server的连接

燃鹅,用MSSM连接却可以连接,从后面我们知道,第三方数据库管理软件一般通过TCP/IP来连接管理的。而MSSM就是采用的Shared Memory来进行连接管理的,因此不走TCP/IP这条道,那么就可以连接并进行管理。

MSSM

在配置中,从客户端协议顺序来看,可以得知。


说了那么多,那么怎么解决呢?

  • 保证所有SQL Server相关服务处于运行状态。 当然,如果你使用MSSM可以连接管理的话,我想你相关服务应该是没问题的。

  • 打开SQL Server配置管理器,展开 SQL Server 网络配置 - xxxx 的协议(注:xxxx 为你SQL Server名称),在右侧协议列表中,双击打开 TCP/IP属性, 首先保证状态为 。 在IP地址选项卡一栏,下拉到最后一项设置,名为 IPALL,此表示所有本地IP地址的统一设置。此时,在 TCP动态端口 填入 1433 (注:SQL Server 默认端口是 1433 ,当然你可以指定其它合法不被占用端口也行,不过连接时需要指定端口,因此不建议修改成其它端口号)

修改所有访问端口为1433

  • 修改完成后,点击确定,会提示重启所有相关SQL Server服务生效,那么就重启所有SQL Server服务吧。

重启SQL Server相关服务

  • 怎么样?此时用Navicat等第三方工具连接SQL Server是不是成功了呢。


如果还不行呢?

如果还不能进行连接管理的话。。。好吧,其实我这样设置后,我也是登录不进去,不管是用Windows身份验证登录还是使用SQL Server身份验证都不行。那我怎么解决呢?请看:

  • 服务器属性 - 安全性选择页,右侧 服务器身份验证 下,虽然 我之前使用的就是 SQL Server 和 Windows身份验证模式,不过也之前也用 MSSM 管理工具分别使用了两个身份验证模式是可以的,但是用第三方工具就是不可以。因此,在此处我将服务器身份验证修改成Windows身份验证模式重启相关SQL Server服务,然后再使用Navicat第三方管理工具连接并使用Windows身份验证模式进行登录,发现竟然可以连接成功了!

通过Windows验证登录成功

  • 然后我又切换回SQL Server和Windows身份验证模式重启相关SQL Server服务后,再使用Navicat第三方管理工具连接并使用SQL Server身份验证模式进行登录,也同样成功连接了。

  • 因此,就搞定了啦!

附录

下面是一个关于JBDC访问SQL Server数据库的小摸索,比如当我使用SQL Server身份验证模式访问新建的数据库stu时,出现了以下错误:

数据库连接失败

同样的,我使用Windows身份验证模式登录访问这个stu表时,却是可以正常访问的。

那么问题在哪呢?

好吧,我记起来了,我新建stu这张表是以Windows身份验证模式登录的,所以现在我以SQL Server身份验证登录并对其进行访问是行不通的,也是合情合理的。

如果要解决这个问题呢,那就找到相关数据库(即stu数据库),右键 - 属性,在数据库属性 - 权限 ** 选项卡下,对用户或角色为 public 的这个角色进行相关权限的授予**。

数据库授权

完成后,确定修改。再次访问时,就可以访问啦。

连接成功

posted @ 2019-11-28 00:51  notfound945  阅读(12166)  评论(0编辑  收藏  举报