我司开发的网络版本软件都是基于SQL Server 2000的C/S结构。非常适合公司内部网络使用。对于有些有远程访问需求,但是又没有网络环境的用户来说,如何实现异地对数据库的访问呢?
假设用户有A,B两个不同地域的办公地点,而且A,B都采用ADSL上网方式,其中数据库服务器架设在A。A的内部可以通过服务器名或者服务器的本地IP访问服务器。而B必须通过公网IP才可以访问A地的数据库服务器。由于A是通过拨号上网,每次分配的IP地址不尽相同。解决这个问题的办法就是目前用的比较多的动态IP的绑定。具体的可以参考“花生壳”软件(网址:
http://www.oray.net/),他会给你分配一个固定的域名,比如:differsoft.vicp.net,在你的服务器上装上花生壳后一个软件,当ip发生变化,这个软件都会把新的ip报告给他的服务器,我们的客户端只要填写域名即可。
在实际使用过程中,可能有更复杂的问题要考虑,比如A地的服务器并不是直接拨号上网,而是通过路由器上网,这个时候,adsl分配的ip地址并不指向服务器,而是分配给路由器,因此需要在路由器上作个端口映射,将1433端口映射到服务器的本地ip地址中。
有不少用户本地机器都可以连上服务器,端口影射也做好了,依然发现远程客户端不能连接,这个时候,要检查一下服务器的1433端口是否打开,远程访问和本地访问不同的关键就在这里,远程必须通过TCP的1433端口(默认情况下都是1433)连接,而本地则可以通过命名管道方式。检查的方式很简单,在服务器上运行“cmd”,调出dos窗口,输入“netstat -an”,会出现当前打开的端口和连接情况,如果没有1433端口,说明sql 并没有开启该端口,远程无法连接。如:
很多朋友问我,既然1433端口打不开,那我用什么命令可以把他打开呢?很抱歉,这个只能要sql自己打开,我打不开。一般情况下有这几个方面的原因:
1.你的服务器开启了防火墙,如果这样,请关掉,特别是xp操作系统会自带防火墙,要关掉。
2.你的sql比较旧或者和操作系统不兼容,导致无法打开,这种情况建议打个sql补丁chs_sql2ksp3.exe,可以从微软网站下载:
http://www.microsoft.com/downloads/details.aspx?FamilyID=90dcd52c-0488-4e46-afbf-acace5369fa3&DisplayLang=zh-cn最后需要说明的是,受网络带宽制约,这种访问方式的远程客户端速度并不理想,因此如果条件允许我们还是建议用户采用VPN,VNN等方式,关于VPN,VNN相关资料可以百度搜索一下。由于环境架设过程中,环节比较多,我们不为客户提供这种服务 。