今天在配置openfire的时候,要配置数据库连接,我机器上环境是win7+sql server2005,于是填入sqlserver的连接URL:\\192.168.1.100:1433,按下一步的时候却提示不能连接到数据库。愣了一下,意识到sqlserver服务没有开(因为平时不是一直使用sqlserver,所以都会把sqlserver相关几个服务禁用掉以节省资源,同是在这里提醒一下:很多时候连接不上sql server,最常见的原因是没有开启服务^_^)
开启服务后再连接,还是失败。突然又意思到:好像没有允许远程连接,于是打开“外围应用配置器”—“服务和连接的外围应用配置器”—“DATABASE ENGINE”—“远程连接”,选择了"同时使用TCP/IP和named pipes",确定,重启服务,在连接,还是失败...
以往连接不上sqlserver,来到这步都可以解决了,但是现在是什么问题呢?难道 192.168.1.100不是我自己的IP?马上"cmd"-"ipconfig",发现自己IP正是192.168.1.100,然后打开“SQL SERVER Configuration Manager”—"SQL SERVER 2005的网络配置"—“V8ENGIN的协议”(V8ENGIN是我SQLSERVER实例名称),右击“TCP/IP”协议,选择“属性”,并进入“IP地址”tab,检查有没有问题。发现没有填写IP,于是把IP1一栏填写起来,并在“已启用”一栏选“是”,顺便将IP2-IP5的“已启用”选择“否”
确定,重启服务。重新连接的时候还是连接不上!!烦呐,于是上网google了一下,有的人说是要打补丁,我用windows验证连接进入,运行了一下"select @@version",得出的版本是9.0.xxx,跟网上描述的要打补丁的情况有很大不同,应该不是补丁引起的问题。无意中开到一个网友说把防火墙关掉!我恍然大悟:防火墙屏蔽了1433端口!! 于是关掉了防火墙。但意外的是,还是连接不上。
说到端口,我想:是不是端口有问题?于是"cmd"—“netstat -a -n ”查看一下,但竟然没有发现有监听1433端口,怪不得连接不上。
但是为什么没有监听到1433端口呢?我明明在IP1里面设置了TCP端口为1433,这是经过一轮google,又看到一个网友提到:把IPALL设置成1433。于是照办,竟然行了!!
很奇怪,于是又google了一下,找到的答案是:http://support.microsoft.com/kb/265808,大概意思就是:,如果在“TCP/IP属性”中的“协议”中将“全部侦听”选择为"是",则可以为所有TCP/IP连接指定默认的端口(端口号为“IPALL”栏中的端口号),如果“全部侦听”选择为"否"则可为不同IP独立设置端口号。
总结:
SQL SERVER出现无法连接(或无法通过IP进行连接),多数是一下几种原因:
1.服务没有开放
2.防火墙屏蔽了端口(通常是1433端口)
3.没有允许远程访问。在外配应用配置器中设置“允许远程访问”
4.TCP/IP协议中,基于TCP/IP远程连接的IP选项设置不正确(通常是填错IP,或者填对但没有启用)
5.(如我现在碰到的问题)选择了”全部侦听“,但没有设置到"IPALL"的TCP端口号。
题外话:一般搞IT的遇到问题,在网络上搜索几乎都能找到解决办法(可怜的google被间歇性封锁后,俺只能时常使用bing了)