*(00)*

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  613 随笔 :: 0 文章 :: 45 评论 :: 159万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

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

 

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

 

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

 

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

 

2、SQL2000 SP4补丁程序

 

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

 

 

[cpp] view plain copy
 
  1. C:/Documents and Settings/Koma>netstat -an  
  2.   
  3. Active Connections  
  4.   
  5.   Proto  Local Address          Foreign Address        State  
  6.   TCP    0.0.0.0:135            0.0.0.0:0              LISTENING  
  7.   TCP    0.0.0.0:445            0.0.0.0:0              LISTENING  
  8.   TCP    0.0.0.0:1433           0.0.0.0:0              LISTENING  
  9.   TCP    0.0.0.0:6059           0.0.0.0:0              LISTENING  
  10.   TCP    127.0.0.1:1026         0.0.0.0:0              LISTENING  
  11.   TCP    127.0.0.1:1036         127.0.0.1:1025         CLOSE_WAIT  
  12.   TCP    127.0.0.1:1038         127.0.0.1:1025         CLOSE_WAIT  
  13.   TCP    192.168.1.100:139      0.0.0.0:0              LISTENING  
  14.   UDP    0.0.0.0:445            *:*  
  15.   UDP    0.0.0.0:1434           *:*  
  16.   UDP    127.0.0.1:123          *:*  
  17.   UDP    127.0.0.1:1049         *:*  
  18.   UDP    127.0.0.1:1239         *:*  
  19.   UDP    127.0.0.1:1900         *:*  
  20.   UDP    192.168.1.100:123      *:*  
  21.   UDP    192.168.1.100:137      *:*  
  22.   UDP    192.168.1.100:138      *:*  
  23.   UDP    192.168.1.100:1900     *:*  
  24.   
  25. C:/Documents and Settings/Koma>  

 

 

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

 

3、DEMO程序相关代码

 

      A、建立连接时的代码:

 

[cpp] view plain copy
 
  1. BOOL CQDlg::OnInitDialog()  
  2. {  
  3.     ......  
  4.           
  5.     // Set the icon for this dialog.  The framework does this automatically  
  6.     //  when the application's main window is not a dialog  
  7.     SetIcon(m_hIcon, TRUE);         // Set big icon  
  8.     SetIcon(m_hIcon, FALSE);        // Set small icon  
  9.       
  10.     // TODO: Add extra initialization here  
  11.     //初始化COM接口  
  12.     if (!AfxOleInit())  
  13.     {  
  14.         AfxMessageBox("初始化com接口失败");  
  15.     }  
  16.     HRESULT hr;   
  17.     try   
  18.     {   
  19.         // 创建Connection对象  
  20.         hr = m_pConnection.CreateInstance("ADODB.Connection");   
  21.         if(SUCCEEDED(hr))   
  22.         {  
  23.             // 连接数据库成功  
  24.             hr = m_pConnection->Open("Provider=SQLOLEDB;Server=koma.5166.info,1433;DataBase=student;UID=sa;PWD=","","",adModeUnknown);  
  25.             // MessageBox("数据库连接成功!");  
  26.         }   
  27.     }   
  28.     catch(_com_error e)   
  29.     {  
  30.         // 捕捉异常  
  31.         CString errormessage;  
  32.         errormessage.Format("连接数据库失败!/r/n错误信息:%s",e.ErrorMessage());   
  33.         AfxMessageBox(errormessage);///显示错误信息   
  34.     }   
  35.     return TRUE;  
  36. }  

 

 

      B、程序运行效果:

SQL远程访问

 

 

       C、SQL查询分析器:

SQL查询分析器

 

4、总结

 

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

 

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

posted on   *(00)*  阅读(745)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
历史上的今天:
2013-08-05 java 解析office文件 大全
点击右上角即可分享
微信分享提示