建立到远程sql server数据库连接时失败,提示“SQL Server 不存在或访问被拒绝”。
出现这种状况极有可能的原因是sql server 2000未开启默认的1433端口。
一、判断
运行cmd,在控制台执行 telnet ip 1433 。
如果命令执行成功,可以看到屏幕一闪之后光标在左上角不停闪动,这说明 SQL Server 服务器工作正常,并且正在监听1433端口的 TCP/IP 连接
如果命令返回”无法打开连接”的错误信息,则说明服务器端没有启动 SQL Server 服务。
二、检查和分析
1 检查远程服务器是否启动了sql server 2000服务。如果没有,则启动。
2 检查服务器端有没启用Tcp/IP协议,因为远程连接(通过因特网)需要靠这个协议。检查方法是,在服务器上打开 开始菜单->程序->Microsoft SQL Server->服务器网络实用工具,看启用的协议里是否有tcp/ip协议,如果没有,则启用它。
3 检查服务器的tcp/ip端口是否配置为1433端口。仍然在服务器网络实用工具里查看启用协议里面的tcp/ip的属性,确保默认端口为1433,并且隐藏服务器复选框没有勾上。
4 如果服务器端操作系统打过sp2补丁,则要对windows防火墙作一定的配置,要对它开放1433端口,通常在测试时可以直接关掉windows防火墙(其他的防火墙也关掉最好)。
5 检查服务器是否在1433端口侦听。如果服务器没有在tcp连接的1433端口侦听,则是连接不上的。检查方法是在服务器的dos或命令行下面输入
netstat -a -n 或者是netstat -an,
在结果列表里看是否有类似 tcp 127.0.0.1 1433 listening 的项。如果没有,则通常需要给sql server 2000打上至少sp3的补丁。
因为win2003 sql server 2000 sp3以前的版本默认是关闭1433端口的,这点可以在系统日志里的应用程序日志可以看到相应的描述。
安装sql server 2000 sp4补丁后,重新启动服务,可以在系统日志里看到sql server 开始对127.0.0.1 1433端口以及服务器ip 1433监听。到这里就可以实现开启默认的1433端口。
基本上网上的文章到这里就告一段落了,基本上大多数朋友的问题都得到了解决,但是,还有一部分朋友(比如我)仍不能正常连接。
那么我们接着往下继续工作,直到找到问题所在,并解决它。为了解决这个问题,我奋战到凌晨1点,分别在2台服务器(win2003)和本机(winxp)安装了sql server 2000个人版和企业版,并且打好sp4补丁包后,在本机的sql server 2000都不能连接到服务器的sql server数据库。
大清早起来,继续奋斗。突然想到,这么多人成功的解决了这个问题,说明这个问题并不复杂,而且在微软的官方文献和网上的文章也没有提到还有其他的bug。一定是忽略了某个环节造成了这种假象。于是照以下思路做了分析:
1、测试两台服务器之间是否能够连接。经测试可以连接,说明1433端口已经打开并成功监听。
2、此时本机到服务器仍不能连接。于是想到极有可能是防火墙阻止了1433端口。之前为什么会想不到这点呢?是因为我已经关闭了服务器上自带和安装的所有的防火墙。但实际上的网络状况是服务器是放置在单位的一个硬件防火墙之内,而我的本机在防火墙外。由于我没有防火墙的账号,无法知道是否设置阻止1433端口,但从这些现象来分析,可能性极大。
3、想到这个原因,我马上就验证。因为80,8080端口都是放行的,所以我把服务器的监听端口改为8080,然后把本机的客户端实用工具的TCP/IP协议端口也改为8080,再次连接果然提示成功。
由此,我想那些安装sp4补丁包仍然连接失败的朋友,应该从网络环境上找找原因,看是哪个地方禁止了TCP 1433端口。
三、在实际操作过程可能遇到的一些问题
1、怎么知道是否安装了sp4补丁
查询分析器中运行:
select @@version
如果出来的版本号是8.00.2039以下,则表明你未安装sp4的补丁
2、安装sp4补丁提示被挂起
a、重启机器,再进行安装,如果发现还有该错误,请按下面步骤
b、在开始->运行中输入regedit
c、到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 位置
d、选择文件->倒出,保存
e、在右边窗口右击PendingFileRenameOperations,选择删除,然后确认
f、重启安装,问题解决
3、修改默认端口后,程序中连接字符串怎么写
在 “datasoure=xxx.xxx.xxx.xx” 后加上端口号,如服务器ip为 100.1.1.234 ,修改后的端口为1200,则改为: “datasoure=100.1.1.234,1200”
转自:http://www.ishbk.net/?p=1622