连接到数据库服务器而不会暴露网络共享

问题描述

这在许多数据库中都非常简单,但是我还没有找到在服务器模式下通过网络使用Advantage来实现这一目标的方法

假设2台PC:

  • SERVER:运行Advantage数据库服务器,并包含一个数据库
  • 客户端:包含一个简单的应用程序,甚至仅包含Advantage Architect。

如果包含该数据库文件夹是通过OS共享的(网络共享,具有读/写权限),则建立连接很简单。

但是,我正努力避免暴露网络共享。 例如,在Firebird中,可以使用连接路径来完成: SYSDBA @ SERVER:C:\ SomePrivateFolder \ myapp.fdb

这不是为数据库公开端口(6262)的原因吗?

有趣的是,它们提供了一种称为“互联网”的连接。我非常怀疑他们是否需要Internet上的网络共享才能访问数据库

那么,这是否可行,如果可以的话,不妨提示一下。

谢谢!

编辑:

按照下面的答案,添加更多详细信息。

SERVER包含2个文件夹,每个文件夹都有其ADV词典:

  • C:\ Data \ mydata.add(不是共享文件
  • C:\ DataShared \ mydata.add(共享文件

我能够使用连接路径\\ SERVER:6262 \ DataShared \ mydata.add连接到第二个

连接到我尝试过的第一个

  • \\ SERVER:6262 \ C:\ Data \ mydata.add
  • \\ SERVER:6262 \ Data \ mydata.add
  • \\ SERVER:6262:C:\ Data \ mydata.add

没有一个起作用。

请注意,我不是直接调用存储过程,而是使用Delphi ADS组件,这些组件肯定会在内部调用相同的存储过程。 我当然是作为远程连接(在SERVER上启动了ADS服务器)。对于其他参数,我使用TCP / IP作为通讯工具。类型和认的ADSSYS /空白密码。

牢记此设置,连接到\\ SERVER上的C:\ Data \ mydata.add的路径是什么?

再次感谢

解决方法

无需在共享文件夹上公开数据库。仅在使用本地连接时才需要这样做。如果使用INTERNET或REMOTE,则只需使用API​​ AdsConnect60()进行连接。在帮助文件中查找它。

UNSIGNED32 AdsConnect60( UNSIGNED8 *pucConnectPath,UNSIGNED16 usServerTypes,UNSIGNED8 *pucUserName,UNSIGNED8 *pucPassword,UNSIGNED32 ulOptions,ADSHANDLE *phConnect );

此外,您可以使用服务器端别名来隐藏数据所在的路径。在帮助文件上查找它。这很简单。

为简化起见,请执行以下操作: 运行ads server配置实用工具,转到“配置实用工具”标签,在其中,转到“文件位置”标签。写下错误和断言日志路径的路径。假设它是c:。我们还假设服务器是192.168.1.1。

现在在该路径(c :)中创建一个名为AdsServer.ini的文件,其内容为:[ServerAliases]和一行adsdata = c:\ data。现在像这样使用API​​函数AdsConnect60:AdsConnect60(“ \\ 192.168.1.1 \ Adsdata \ Mydata.add”,ADS_REMOTE_SERVER,“ adssys”,“密码”,ADS_DEFAULT,&hConn);

如果您使用的是Delphi或其他语言,请确保检查出已经为API封装的类。

所有记录都确实有据可查:http://devzone.advantagedatabase.com/dz/WebHelp/Advantage11.1/index.html?ace_adsconnect60.htm

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...