参考文章: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;

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


您的十分满意是我追求的宗旨。

您的一点建议是我后续的动力。







本文转载:CSDN博客