SQL学习笔记:服务端配置-如何让外网访问SQL2000

      刚刚写了个DEMO,在内网来测试SQL2000后完全正常。现在想测试外网是否正常,毕竟路由器IP不固定,所以选择了路由器+花生壳免费域名(koma.5166.info),所以先安装花生壳客户端软件。下面是我在这过程中遇到的一些问题:

 

1、理论上将1433端口映射出去(这个端口是SQL2000服务器默认的端口)

 

      结果发现程序、SQL查询分析器都无法连接服务器。这时我排除WINDOWS防火墙、关闭瑞星防火墙与杀毒软件仍无法连接。

 

      于是乎查阅相关资料,网上的资料真的太多,涉及到的参数与设置太多,估计是大多人喜欢转载来转载去的,真不知道他们自己实践过没有。结果仍然没有成功!

 

2、SQL2000 SP4补丁程序

 

      这是很多地方看到最多的一个方法,于是先下载安装完这个补丁后,发现DEMO程序与SQL查询分析器还是无法正确连接,于是查看端口监听状态,在命令行输入netstat -an

 

C:/Documents and Settings/Koma>netstat -an Active Connections Proto Local Address Foreign Address State TCP 0.0.0.0:135 0.0.0.0:0 LISTENING TCP 0.0.0.0:445 0.0.0.0:0 LISTENING TCP 0.0.0.0:1433 0.0.0.0:0 LISTENING TCP 0.0.0.0:6059 0.0.0.0:0 LISTENING TCP 127.0.0.1:1026 0.0.0.0:0 LISTENING TCP 127.0.0.1:1036 127.0.0.1:1025 CLOSE_WAIT TCP 127.0.0.1:1038 127.0.0.1:1025 CLOSE_WAIT TCP 192.168.1.100:139 0.0.0.0:0 LISTENING UDP 0.0.0.0:445 *:* UDP 0.0.0.0:1434 *:* UDP 127.0.0.1:123 *:* UDP 127.0.0.1:1049 *:* UDP 127.0.0.1:1239 *:* UDP 127.0.0.1:1900 *:* UDP 192.168.1.100:123 *:* UDP 192.168.1.100:137 *:* UDP 192.168.1.100:138 *:* UDP 192.168.1.100:1900 *:* C:/Documents and Settings/Koma>

 

      此时我关闭所有那些无关的应用程序,于是将上面所有侦听的端口全部隐射出去,最终排锁定在两个端口:1433与445。

 

3、DEMO程序相关代码

 

      A、建立连接时的代码:

BOOL CQDlg::OnInitDialog() { ...... // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here //初始化COM接口 if (!AfxOleInit()) { AfxMessageBox("初始化com接口失败"); } HRESULT hr; try { // 创建Connection对象 hr = m_pConnection.CreateInstance("ADODB.Connection"); if(SUCCEEDED(hr)) { // 连接数据库成功 hr = m_pConnection->Open("Provider=SQLOLEDB;Server=koma.5166.info,1433;DataBase=student;UID=sa;PWD=","","",adModeUnknown); // MessageBox("数据库连接成功!"); } } catch(_com_error e) { // 捕捉异常 CString errormessage; errormessage.Format("连接数据库失败!/r/n错误信息:%s",e.ErrorMessage()); AfxMessageBox(errormessage);///显示错误信息 } return TRUE; }

 

      B、程序运行效果:

SQL学习笔记:服务端配置-如何让外网访问SQL2000_第1张图片

 

 

       C、SQL查询分析器:

SQL学习笔记:服务端配置-如何让外网访问SQL2000_第2张图片

 

4、总结

 

     MS SQL2000“表面”上看起来像只是1433端口在侦听,但实际上还有个445端口也在侦听,两者缺一不可。 所以让外网主机访问内网SQL2000服务器必须先安装SP4补丁(打补丁前请先备份好自己重要的数据),再将1433与445端口两个都从NAT设备中映射出去即可。

 

     至于为什么需要同时侦听这两个端口,哪位友友知道的麻烦告诉我一下,谢谢啊!

你可能感兴趣的:(sql,数据库,tcp,服务器,路由器,initialization)