参考文章:http://www.cnblogs.com/delphinet/archive/2011/06/24/2088765.html
---------------------------------------------------------------------------------------------------------------
先说一下我的环境:主机是WIN7,SQL2000安装在虚拟机XP中,XP的IP为:192.168.137.11。
今天在用C#连接SQL2000时,连接不上,经过查阅相关资料后,成功的连接上SQL2000,
在此做个记录。
--------------------------------------------------------------------------------------------------------------------------------
第一步:
我们看看本机是否能够ping通SQL2000所在的电脑XP,
ping 192.168.137.11 //截图如下
由截图可知,我们本机是可以ping通SQL2000所在机器的,这说明了双方之间的连接线路
不存在问题。
-----------------------------------------------------------------------------------------------------------------------------
第二步:
在确认了双方之间的连接线路没有问题后,我们看看能否在命令行远程登陆SQL2000,
命令为:telnet 192.168.137.11 1433 //1433是SQL2000默认开放的端口,如果你改过,请灵活应变。
//1.登陆失败时的截图如下:
//2.登陆成功时的截图如下(此时没有任何信息提示):
如果你telnet失败,那说明是SQL2000所在机器的设置问题。
如果你telnet成功,那就是你程序的问题了,比如连接字符串不正确,
连接代码有问题等。
根据telnet登陆的结果,下一步我们就知道该如何去解决问题了。
----------------------------------------------------------------------------------------------------------------------------------------------------------
检查SQL2000所在机器:
(1)检查SQL2000所在的系统是否启动了sql server 2000服务。如果没有,则启动。
(2)检查SQL2000所在系统是否启用了Tcp/IP协议,因为远程连接(通过因特网)需要靠这个协议。
检查方法是,在服务器上打开 【开始菜单】->【 程序】-> 【Microsoft SQL Server】->【 服务器网络实用工具】,
看启用的协议里是否有tcp/ip协议,如果没有,则启用它。
//截图如下
(3)检查服务器的tcp/ip端口是否配置为1433端口。仍然在SQL2000所在系统里使用【SQL Server 网络实用工具】
查看启用协议里面的tcp/ip的属性,确保默认端口为1433,并且隐藏服务器复选框没有勾上。
事实上,如果默认端口被修改,也是可以的,但是在客户端做 telnet测试时,
写服务器端口号时必须与服务器配置的端口号保持一致。
如果隐藏服务器复选框被勾选,则意味着客户端无法通过枚举服务器来看到这台服务器,起到了保护的作用,
但不影响连接,但是Tcp/ip协议的默认端口将被隐式修改为2433,在客户端连接时必须作相应的改变。
//截图如下:
(4)如果服务器端操作系统打过sp2补丁,则要对windows防火墙作一定的配置,要它对外开放1433端口,
建议在测试时关闭所有的防火墙,以免影响工作。
(5)检查服务器是否在1433端口侦听。如果服务器没有在tcp连接的1433端口侦听,则是连接不上的。
检查方法是在SQL2000所在系统的CMD里输入命令:netstat -a -n 或者是netstat -an,
在结果列表里看是否有类似 tcp 127.0.0.1 1433 listening 的项。
如果没有,则通常需要给sql server 2000打上至少sp3的补丁。
PS:我觉得这一步是最重要的了,不管你有没有看到SQL2000在端口1433监听的状态,
我建议都要给SQL2000打一个补丁【SQL2KSP4.rar】,
该补丁的下载地址为:【SQL2KSP4.rar】
根据我的经验,如果你没有打该补丁,远程连接SQL2000是很难连接得上的,
远程连接不上SQL2000的常见原因,很大一部分是没有打补丁【SQL2KSQ4.rar】
//废话多了,这一步的截图如下:
--------------------------------------------------------------------------------------------------------------------------------------
检查完【SQL Server 网络实用工具】后,如果问题没有解决,我们还有一个工具需要检查,
那就是【客户端网络使用工具】,打开方法:
【开始】-->【程序】->【 Microsoft SQL Server 】-> 【客户端网络使用工具】。
像在【服务器网络实用工具】里一样,确保客户端tcp/ip协议启用,并且默认端口为1433(或其他端口,与服务器端保持一致就行)。
//截图如下
-----------------------------------------------------------------------------------------------------------------------
最后谈一点远程连接SQL服务器的技巧,也许对你有帮助。
先看一下我的SQL2000所在的服务器截图如下所示,
看到了服务器的名字是:【XP2012\SQL2000】了吗? //请根据你实际看到的名字灵活应变。其中XP2012是计算机名
那么我们使用代码时如何它呢?请往下看。
-------------------------------------------------------------------------------------------------
先看一下用【查询分析器】连接【XP2012\SQL2000】的截图
//注:XP2012是计算机名,我们可以用其IP来代替它。
-------------------------------------------------------------------------------------------------------------
我使用C#连接SQL2000时的连接字符串如下;
Data Source=192.168.137.11\SQL2000,1433;Network Library=DBMSSOCN;Initial Catalog=dbKTV;Persist Security Info=True;User ID=sa;Password=123456;
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
您的十分满意是我追求的宗旨。
您的一点建议是我后续的动力。