SQL SERVER 2005 无法使用SQL SERVER MANAGERMET STUDIO 登陆(原因是没有使用默认端口进行远程连接所造成的)

SQL SERVER 2005  无法使用SQL SERVER MANAGERMET STUDIO 登陆(原因是没有使用默认端口进行远程连接所造成的)

 

某次使用SQL SERVER MANAGERMET STUDIO发现无法登陆

服务器名使用的是:“计算机名\数据库实例名” 这样的方式,居然用windows身份验证都无法登陆

 

服务确定已全部开启

 

接着使用:“(local)\数据库实例名” 的方式,发现可以登陆

 

 因此确定,是默认的连接端口被改变。

 

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 

以下说明是2000的情况,2005类似

看端口是否打开的方法:

一、看ping 服务器IP能否ping通:

 这个实际上是看和远程sql server 2000服务器的物理连接是否存在。如果不行,请检查网络,查看配置,当然得确保远程sql server 2000服务器的IP拼写正确。

二、在Dos或命令行下输入telnet 服务器IP 端口,看能否连通。

telnet 127.0.0.1 1433。通常端口值是1433,因为1433是sql server 2000的对于Tcp/IP的默认侦听端口。如果有问题,通常这一步会出问题。通常的提示是“……无法打开连接,连接失败"。

如果这一步有问题,应该检查以下选项。

1 检查远程服务器是否启动了sql server 2000服务。如果没有,则启动。

2 检查服务器端有没启用Tcp/IP协议,因为远程连接(通过因特网)需要靠这个协议。检查方法是,在服务器上打开 开始菜单->程序->Microsoft SQL Server->服务器网络实用工具,看启用的协议里是否有tcp/ip协议,如果没有,则启用它。

3 检查服务器的tcp/ip端口是否配置为1433端口。仍然在服务器网络实用工具里查看启用协议里面的tcp/ip的属性,确保默认端口为1433,并且隐藏服务器复选框没有勾上。

事实上,如果默认端口被修改,也是可以的,但是在客户端做telnet测试时,写服务器端口号时必须与服务器配置的端口号保持一致。如果隐藏服务器复选框被勾选,则意味着客户端无法通过枚举服务器来看到这台服务器,起到了保护的作用,但不影响连接,但是Tcp/ip协议的默认端口将被隐式修改为2433,在客户端连接时必须作相应的改变。

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的补丁。其实在服务器端启动查询分析器,输入 select @@version 执行后可以看到版本号,版本号在8.0.2039以下的都需要打补丁。

 

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

开启2005的远程登陆端口

最近因项目要求需要在同一服务器上安装SQL2000和SQL2005,现把安装过程中遇到的问题记录下来,方便遇到同样问题的朋友。        

1,因为SQL2000安装过程中无法修改实例名称,故安装过程中必须先安装SQL2000,然后在安装SQL2005.安装SQL2005时必须修改SQL实例名称,否则将和SQL2000的实例名称冲突. (关于此点,本人并不认同。若是先安装sql2005,则在安装sql2000的过程中自会提示你要修改实例名称。)      

2,安装完SQL2005后,开始准备用SQL2000客户端工具连接SQL2005,结果报告不能用SQL2000客户端工具连接,只能用SQL2005客户端工具连接,后证明SQL2005客户端工具可以同时连接SQL2000和SQL2005。      

3,服务器上安装完成后,准备用远程连接SQL服务器试试,结果始终连接不上SQL2005,只能连接上SQL2000.原来SQL2000服务器用的端口始终是1433端口,而SQL2005使用的是动态端口.那如果用程序连接SQL20005服务器的时候,程序如何知道SQL2005服务器用的是什么端口呢?原来SQL2005提供了一个SQL BROWER服务,开启这个服务后,就可以通过查询SQL BROWER服务 就可以知道SQL2005现在正在使用哪个端口.因为项目需要,需要把这个SQL2005的动态端口改成静态的,修改过程如下:        运行SQL配置管理程序,找到SQL的实例名称下面的协议,双击右边的TCP/IP协议,在第二选项卡中IPALL里面输入SQL运行的端口就可以了(注意不能同时填写动态端口和静态端口,否则SQL下次将无法启动),修改完成后重新启动SQL服务即可生效。       

4,修改端口后在连接发现仍然不能连接,原来还需要开启SQL2005的远程登陆服务。   在Microsoft SQL Server 2005中默认的是不允许远程登录的,会出现【provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错】的错误,下面的方法可以打开:  配置工具->sql server外围应用配置器->服务和连接的外围应用配置器->打开MSSQLSERVER节点下的Database Engine 节点,先择"远程连接",接下建议选择"同时使用TCP/IP和named pipes",确定后,重启数据库服务就可以。      

5,远程登陆服务和端口都修改之后连接应该没有问题了吧,结果远程连接SQL2000的时候发现没有问题,但是连接SQL20005依然不行,在SQL2005的客户端连接工具里面需要输入你要连接的SQL服务,SQL2000的直接输入服务器的IP地址即可,那如何输入才能让客户端工具连接到SQL2005的服务呢?既然SQL2005修改了端口,那按照常规的录入格式应该是输入:IP地址+冒号+端口号应该就可以了。结果试了一下发现依然不行.后又修改了客户端的连接的默认端口,结果仍然不行。没办法了只有到网上GOOGLE了一翻,结果终于在一篇英文文章中找到了连接的方法,原来按照常规的格式录入是错误的,需要改成:IP地址+逗号+端口号才行.现在一试果然可以。然后在试着通过。NET程序访问看能否连接,结果都可以。       不采用以上附加的方法的时候,就在服务器的2000升级到SP4就可以。这个我已经验证了。如果在不对,请检查用户名和密码是否正确。

 

posted on 2013-03-28 15:13  aaa6263  阅读(407)  评论(0编辑  收藏  举报