(100分)内网可连接SQL,外网不行?
这是我的一段代码,局域网内运行正常,换一台局域网外的一台上网电脑不能连接?
我的使用环境:
局域网:全部是win2k pro中文版+sp4 ,sql2000个人版+sp3
采用宽带路由器接入(路由器IP:192.168.1.2,网内PC IP地址:192.168.1.xxx)
局域网外电脑:win2k pro中文版+sp4
用局域网外电脑连接网内SQL时是这样测试的:
先获得网内需要连接的电脑的外部IP地址(登陆www.ip138.com即可获得),然后将该IP地址替换 "192.168.1.100 ",还是不行
该代码在局域网内使用时一切正常,请高手帮我看看问题在哪?
Option Explicit
Public adoConnection As Connection
Public adoRecordest As Recordset
Public Function OpenCn() As Boolean '连接数据库
Dim mag As String
On Error GoTo strerrmag
Set adoConnection = New ADODB.Connection
adoConnection.ConnectionTimeout = 30
adoConnection.Provider = "sqloledb "
adoConnection.Properties( "data source ").Value = "192.168.1.100 "
adoConnection.Properties( "initial catalog ").Value = "Date_01 "
adoConnection.Properties( "integrated security ").Value = "SSPI "
adoConnection.Open
OpenCn = True
addFlag = True
Exit Function
strerrmag:
mag = "数据库不能连接! "
Call MsgBox(mag, vbOKOnly, "错误 ")
addFlag = False
OpenCn = False
End Function
Public Function openrs(ByVal strSQL As String) As Boolean '连接到数据集
Dim mag As String
Dim rpy As Boolean
On Error GoTo strerrmag
Set adoRecordest = New ADODB.Recordset
If addFlag = False Then rpy = True
With adoRecordest
.ActiveConnection = adoConnection
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.LockType = adLockReadOnly
.Open strSQL '注:此strSQL连接字符已设好了
End With
addFlag = True
openrs = True
Exit Function
strerrmag:
mag = "不能打开数据集! "
Call MsgBox(mag, vbOKOnly, "错误 ")
openrs = False
End
End Function
[解决办法]
外网的SQL的条件:
远程服务器的1433端口是否打开?把SQL2000打上SP4补丁。
[解决办法]
在宽带路由器上将内网的SQL Server设置在DMZ区。
或者,在宽带路由器上设置1433端口映射到内网的SQL Server上。
[解决办法]
路由器作端口映射了吗?
[解决办法]
架一个VPN服务器,通过VPN拨号连到内网应该可以
[解决办法]
你是否试过所有的外网机器都不能连接、我遇到过xp的不能用ip访问别人的数据库,只能通过机器名访问,不知道你的是否是这方面的事情
[解决办法]
你有没有在你的路由上设置端口映射?把1433端口映射到你的SQL服务器上。
[解决办法]
你把SQL Server的局域网IP地址设置到路由器的DMZ区就可以了。另外,将路由器的1433端口映射到SQL Server的局域网IP地址也行。
这样设置好了之后,你可以在外网上(注意:不是内网),通过路由器的外网IP地址来访问这台SQL Server。
[解决办法]
cssshk() ( 一级(初级)) 信誉:100 2007-3-15 14:10:54 得分:0
?
问题还没解决!
我想知道的是,不通过建VPN的方式,VB有访问外网SQL数据库的能力吗?有人实现过吗?
答:
1)VB有访问外网SQL数据库的能力。
这是肯定且毫无疑问的。
因为我就有现实的例子。
2)最简单的方法:
先建立一个连接到外部SQL SERVER的ODBC连接串(指定计算机名称时写入该计算机的IP地址就可以了)。
然后用代码就可以连接任何地方的数据库了。
[解决办法]
你用SQL SERVER的企业管理器,在里面建立一个连接外网的SQL SERVER的注册,看看能否连接成功。
═══════════════════
http://www.egooglet.com 资料、源码下载
http://bbs.j2soft.cn 论坛交流
═══════════════════
[解决办法]
能连接外网的SQL这是肯定能的,主要看你有没有防火墙阻挡,还有在路由器上要设置端口映射的,外网的机器访问Sql的话,就直接填由器的IP。
[解决办法]
不用VPN要在路由器做SQL SERVER 计算机的地址和路由器外部地址之间做端口影射.做完71.123.45.120:1433 到 192.168.100.100:1433
的影射后,访问外部地址 71.123.45.120:1433 (SQL服务)时路由器会把访问影射成内部网 192.168.100.100:1433(内网 SQL SERVER) 其他:关闭所有防火墙尝试.