无法使用127.0.0.1连接本机SQL Server

作者:五餅二魚工作室  发布日期:2013-04-12 21:46:07

上个月写了一篇有关于 「SQL Server 联机问题」的文章,这几天就遇到有朋友发生无法连接本机 SQL Server 的问题,他也有按照之前所介绍的方法,但还是无法成功联机,于是透过联机软件帮忙看一下问题。

看到这样的错误讯息,当下觉得有点纳闷,会不会是权限不够还是账号被拒绝呢 ?

 


 

于是更改了联机主机的设定,不论使用「(local)」、「localhost」、「JamesPC」(计算机名称)、「192.168.10.1」(IP 地址 ) 这几种方式都可以,唯有 127.0.0.1 不行 ?! 这实在太奇怪了,照理说如果是 TCP 是无法使用的,不会只有 127.0.0.1 是不行的,用实际 IP 反而是可以的状况。

 


 

于是当下想说会不会是 SSMS 的问题,于是决定开 OSQL 来测试

 


 

从上面的结果看起来,似乎不是 SSMS 的问题,看起来是在解析 127.0.0.1 的时候出了一些问题,才导致 SQL Server 的误判。既然知道问题可能会是这样,但会是谁造成的呢 ? 相信很多人看到这里差不多就已经会有答案了,因为在 Windows 环境下要解析名称转换,除了透过 DNS 外,还会去参考 Hosts ( 在 Windows\System32\drivers\ets 的目录下 )。而 127.0.0.1 应该跟 DNS 比较没有关系,所以我们决定来查看看 Hosts 里面有没有甚么问题。 www.it165.net

# localhost name resolution is handled within DNS itself.
#    127.0.0.1       localhost
#    ::1             localhost
127.0.0.1            sqlserver
 

果不其然,原来在 Hosts 里面多了一组设定。找了一下相关人员询问,可能是安装了某个产品,他们为了方便指定连接的 SQL Server,因此在程序中都固定连接 sqlserver 这个名称,然后再来调整 Hosts 了。的确这个是一个方式,但是造成我们直接在本机计算机连接 SQL Server,又刚好采用 Windows 认证方式登入的时候,可能这当中有 IP & 计算机名称转换上造成了混淆,才导致在计算机上无法用主机名称是 127.0.0.1 ,且采用 Windows 认证连接 SQL Server。

 

那知道问题了要如何来解决呢 ? 于是提供两种方式让使用者自己去决定该如何处理;

 

方法一:要是保持 Hosts 内的设定的话,那么再开启 SSMS 的时候,设定 127.0.0.1 连接 SQL Server 的时候采用 「Named Pipes」,只要设定一次让 SSMS 记录起来就可以了。因为这样就不会有 TCP/IP 地址和名称转换上的问题了,算是一种避开的方式。

 


 

方法二:删除 Hosts 档案内的 127.0.0.1 的设定,到服务器管理员内的 「SQL Native Client 11.0 组态」→「别名」内去新增一组别名是 sqlserver,让这个别名设定是走 TCP/IP 连接 127.0.0.1 到本机的 SQL Server。这样原本程序内的也不用修改,而也恢复可以正常使用 127.0.0.1 连接本机的 SQL Server 了。

 


 
 
Tag标签: SQL   Server  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规