标题:提供一种动太IP连接远程SQL服务器数据库实例
只看楼主
曙光电子
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:85
专家分:160
注 册:2012-6-9
结帖率:91.67%
已结贴  问题点数:20 回复次数:2 
提供一种动太IP连接远程SQL服务器数据库实例
论坛上介绍VB远程连接SQL2000数据库的文章比较少,对于远程访问服务器的程序来说比较难的是固定IP地址,因为每次开机后的IP地址要变,申请一个固定IP又太贵了,本人用这种办法解决这个问题(已通过实测)供大家参考,因为是自学,如有错误,请老师指教.
动太IP连接SQL服务器数据库实例.rar (121.08 KB)
搜索更多相关主题的帖子: IP地址 服务器 数据库 文章 
2014-02-01 15:27
曙光电子
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:85
专家分:160
注 册:2012-6-9
得分:0 
说明:当服务器电脑每交开机时,程序自动运行,并生成一批处理文件,查出本机本次开机上网后所分配新的IP地址信息,并保存在一个TXT文件里,然后自动将这个文件发送到各客户端操作员邮箱,客户端操作员打开客户端程序并填上新的IP地址,点按钮就可以连接上远方的SQL数据库,也就可操作这个数据库了.
服务器端程序代码
Private Sub Form_Load()
 '下面是开机自动运行
Set w = CreateObject("wscript.shell")
  w.regwrite "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\" & App.EXEName, _
  App.Path & "\" & App.EXEName & ".exe" '写入注册表
 '下面是连接数据库
Adodc1.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=XXSJ;Data Source=.\mysql" '本机服务器名
  Adodc1.RecordSource = "系统用户"
  Set DataGrid1.DataSource = Adodc1
  '下面是建立批处理文件
  Open "D:\自动检测自己的IP.bat" For Output As #1 '这个程序所在的文件夹下Open AppPath & "\自动检测自己的IP.bat" For Output As #1
Print #1, "ipconfig /all >>D:\IP.txt"
Close #1
 '下面是运行批处理文件
Shell "D:/自动检测自己的IP.bat"
'发送指定路经下的文件到指定邮箱
On Error Resume Next                                   '容错语句
    NameSpace = "http://schemas.
    Set Email = CreateObject("CDO.Message")
    Email.From = "发件邮箱"                          '发信人地址
    Email.To = "收件邮箱"                             '收信人地址
    Email.Subject = "服务器IP"                                   '邮件主题
   Email.AddAttachment "D:\IP.txt" '这是需发送的附件
    With Email.Configuration.Fields
        .Item(NameSpace & "sendusing") = 2
        .Item(NameSpace & "smtpserver") = "smtp.   '这是邮箱的服务器地址
        .Item(NameSpace & "smtpserverport") = 25
        .Item(NameSpace & "smtpauthenticate") = 1
        .Item(NameSpace & "sendusername") = "发信人用户名"       '发信人用户名
        .Item(NameSpace & "sendpassword") = "发件箱密码"     '发件箱密码
        .Update
    End With
    Email.Send
    Set Email = Nothing
    'MsgBox "发送成功!"
End Sub
客户端程序代码
Private Sub Command2_Click()
If Text1.Text = "" Then
   MsgBox "IP地址不能为空,请填上!", 16, "提示!"
    Exit Sub
End If
Adodc1.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=XXSJ;Data Source=" & Text1 & "" '远程服务器电脑上的IP地址
  Adodc1.RecordSource = "系统用户"
  Set DataGrid1.DataSource = Adodc1
End Sub

[ 本帖最后由 曙光电子 于 2014-2-1 19:15 编辑 ]
2014-02-01 18:33
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
注 册:2008-5-7
得分:20 
首先祝新年好!
你确信是在两台机器上测试通过?
1、从你的代码看:你使用SSPI模式连接,即是使用windows用户名连接sql server,这种方式一般只在sql server所在的电脑上能连接,因为安装sql server时会提示你输入操作系统登录用户名及密码,如果你要在另外一台机器上连接这个sql server,则另外一台机器必须也是用相同的用户名和密码登录。
2、连接sql server分外网和内网,如果是外网连接,并且是动态ip的话,则必须有一个固定ip地址的服务器作为中间服务器翻译,才能正常访问到该sql server,这是因为安装有sql server电脑必须通过nat才能访问外网,一般你在百度里输入ip你就知道你电脑在外网的实际映射地址了,实际上如果你即使知道了你在外网的地址,外网的另一台访问你sql server也不会成功,因为你sql server连接端口会被你经由的路由器屏蔽,你必须请求沿途的网管进行端口映射,你才能最终向外网开放sql server服务。
3、如果是内网访问sql server则非常方便,即使是动态ip。sql server提供tcp/ip连接和管道连接,tcp/ip连接可以不需知道ip地址,只需知道sql server所在计算机名即可,计算机名是在安装操作系统时定的,一般不轻易改变。sql server的管道连接则是通过网络共享机制完成的,其原理大致类似于磁盘共享,只需知道计算机名和设置用户权限即可完成连接,这个我不太熟悉,见过一个朋友用这种方式做过sql2005的应用程序。
2014-02-02 02:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-426981-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012753 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved