VB6连接远程数据库SQL2000

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB6连接远程数据库SQL2000相关的知识,希望对你有一定的参考价值。

服务器装XP 并且已经安装好SQL2000和SQL SP4补丁,用的动态域名,测试机器和服务器不在一个网络内,用数据库企业管理器 通过域名可以正常连接数据库 并操作数据库,但VB 始终提示 “找不到指定的SQL服务器”。
一下是VB 连接数据库代码 ,用局域网IP地址连接非常正常。

Public Cnn As ADODB.Connection
Public ServerName As String '服务器名
Public DBname As String '数据库名
Public UserName As String '用户名
Public PassWord As String '密码

Set Cnn = New ADODB.Connection
With Cnn
.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=" & UserName & ";PWD=" & PassWord & ";Initial Catalog=" & DBname & ";Data Source=" & ServerName '&
'连接字符串
.CommandTimeout = 20 '连接等待时间
.CursorLocation = adUseClient '游标类型
.Open
End With
MsSQL.Open sql, Cnn, adOpenStatic, adLockOptimistic

我引用的是AD0是 2.1 但 引用其它版本的ADO 2.0 至 6.0 问题都一样
希望高手能够帮忙找找问题 指点一二。。。。。。。。。。。
经过多次尝试 发现 VB机器 不在同一个局域网内 如果用 SQL服务器的外网地址可以访问 通过域名则访问不了 但域名已经做了花生壳动态解析 ,现在的问题 很奇怪 如果说是域名解析问题 ,为什么用 SQL企业管理器 可以连接域名 而 VB 代码 却提示找不到服务器,难道VB ADO不支持域名连接? ping 域名能通 返回真实的IP地址 VB ADO 连接这个IP地址 则可以正常访问数据库。非常困惑这点

分析了一下你的问题,有几点问题你需要排查:
1、既然是动态域名,那么你的数据库服务器应该面对的是公网。如果是公网,局域网IP连接是否成功就毫无意义。
2、你有否尝试过使用公网IP连接,如果使用公网IP连接成功,那就有可能是域名解析的问题。
3、你是否设置好了路由器的端口映射,分析你的题目,我估计你网络状态可能是多层路由,那么多层路由的端口映射是否都设置好了?还是只设置了一层?
4、如果设置好了端口映射,是不是还有端口号的问题,虽然我没有尝试过,但是由于你的两台电脑可以通过局域网IP连接,可以看出两台电脑虽处于不同网段,但共同使用一个路由接入公网,这样会不会产生端口号冲突?可以尝试修改数据库服务器的SQL SERVER的端口号,并进行映射。
5、服务器上的数据库是使用默认实例名还是指定实例名,如果是指定实例名要在服务器名后加上实例名。
6、建议,局域网内使用局域网IP连接,局域网外使用域名连接。测试也要放在局域网外测试才有意义。追问

麻烦 再看看我的问题补充

追答

看了你后来的补充,分析如下:

    有一个可能是:企业管理器有一个功能,就是他会把域名翻译成IP地址以后再尝试连接。而你的VB程序没有把域名翻译成IP这个过程。

    还有,域名解析的工作机制我没有深入了解过,推测是这样:也许我们的IE和企业管理器一样,先发送一个域名解析请求——》域名解析服务处理后回复一个IP地址——》IE或者其他通过域名访问网络的程序使用IP来访问远程数据。也就是说程序要访问远程数据最终还是要通过IP地址。

    综上,我建议你在你的程序中增加一个通过域名取IP的过程或者函数,这个教程度娘的文库有(你也可以自行搜索),链接:http://wenku.baidu.com/view/d302e21ec5da50e2524d7f50.html     然后你的数据库连接程序就是用这个取得的IP进行连接。

参考技术A 你描述的可能有问题
1、如果是局域网内连接,需要设置局域网内的计算机在一个工作组,并且需要设置服务器的匿名用户的密码永不过期,并且在网上邻居中能够找到服务器,这样按照你的代码估计没有问题;
2、如果是互联网连接,问题就复杂了,首先服务器必须是互联网的服务器,并且必须设置和申请服务器的域名,因为根据网络协议,只有服务器有了域名才能被其他计算机访问。另外,对于SQL数据库,估计在互联网中需要付费的。
上面仅仅说了一个大概,详细情况你可以查阅有关文献。

无法远程连接到SQL Server(TCP错误)

我有问题从另一台计算机远程连接到我的SQL Server数据库。

我正在尝试使用VB.Net应用程序连接到数据库,该应用程序可以与之交互。我会说我的连接字符串可能是问题,但是使用连接字符串连接数据库所在的机器没有问题。

这是连接字符串的样子:

"Data Source=[IP_ADDRESS],[PORT];Network Library=DBMSSOCN;Initial Catalog=SQL_Database;Persist Security Info=True;User ID=[USER];Password=[PASS]"

我现在得到的错误是:

数据库错误:建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供者:TCP提供者。错误:0 - 等待操作超时。)。

这是我到目前为止试图让它工作的方法:

  1. 我确保正在运行的文件不在网络/共享驱动器上。
  2. 我已将TCP端口1433和UDP端口1434的例外添加为防火墙的传入规则。
  3. 我试过禁用防火墙。
  4. 我已进入SQL Server配置管理器,以确保正确设置TCP设置。

我不确定的一件事是,在Configuration Manager中,我同时运行SQL Server和SQL Server Browser,但SQL Server代理无法启动。这会导致我的问题吗?

如果没有,还有什么可以成为我的问题?我需要能够远程访问此数据库,但连接字符串似乎只能在本地工作。

答案

所以问题实际上是我公司安装的网络防火墙。显然,当我问防火墙是否已经放下让我测试时,“是”真的意味着“不”。一旦我暂时禁用了防火墙,我就能完美地连接到所有东西。

以上是关于VB6连接远程数据库SQL2000的主要内容,如果未能解决你的问题,请参考以下文章

sql2000远程不能访问

SQL2000 突然不能远程连接空间里面的数据库了

SQL SERVER2000不允许远程连接问题

SQL SERVER如何远程执行DDL语句?

C#远程连接不上SQL2000,error:40

asp网页 远程连接 sql 2000 的问题!