您的位置:首页 > 数据库

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

2009-08-20 22:57 615 查看
      刚刚写了个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、程序运行效果:



 

 

       C、SQL查询分析器:



 

4、总结

 

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

 

     至于为什么需要同时侦听这两个端口,哪位友友知道的麻烦告诉我一下,谢谢啊!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐