问题描述
这在许多数据库中都非常简单,但是我还没有找到在服务器模式下通过网络使用Advantage来实现这一目标的方法。
假设2台PC:
如果包含该数据库的文件夹是通过OS共享的(网络共享,具有读/写权限),则建立连接很简单。
但是,我正努力避免暴露网络共享。 例如,在Firebird中,可以使用连接路径来完成: SYSDBA @ SERVER:C:\ SomePrivateFolder \ myapp.fdb
这不是为数据库公开端口(6262)的原因吗?
有趣的是,它们提供了一种称为“互联网”的连接。我非常怀疑他们是否需要Internet上的网络共享才能访问数据库。
那么,这是否可行,如果可以的话,不妨提示一下。
谢谢!
编辑:
按照下面的答案,添加更多详细信息。
我能够使用连接路径\\ 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