在不公开网络共享的情况下连接到数据库服务器
connect to a database server without exposing a network share
这在许多数据库中都非常简单,但我还没有找到通过网络在服务器模式下使用 Advantage 实现此目的的方法。
假设 2 台电脑:
- 服务器:运行优势数据库服务器,并包含一个数据库
- CLIENT:包含一个简单的应用程序,甚至只是 Advantage Architect。
如果包含此数据库的文件夹是通过 OS(网络共享,具有 read/write 权限)共享的,则建立连接是直接的。
但是,我正试图避免暴露网络共享。
例如,在 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
连接到第二个
连接到我试过的第一个:
- \\服务器:6262\C:\Data\mydata.add
- \\服务器:6262\Data\mydata.add
- \\服务器:6262:C:\Data\mydata.add
none 其中有效。
请注意,我不是直接调用存储过程,而是使用 Delphi ADS 组件,这些组件肯定会在内部调用相同的存储过程。
我当然是作为远程连接(在服务器上启动了 ADS 服务器)。对于其他参数,我使用 TCP/IP 作为通信。类型和默认 ADSSYS / 空白密码。
考虑到此设置,连接到 C:\Data\mydata.add on \\SERVER 的路径是什么?
再次感谢
无需在共享文件夹中公开您的数据库。只有在使用 LOCAL 连接时,您才会这样做。如果使用 INTERNET 或 REMOTE,则只需使用 API AdsConnect60() 进行连接。在帮助文件中查找它。
UNSIGNED32 AdsConnect60( UNSIGNED8 *pucConnectPath,
UNSIGNED16 usServerTypes,
UNSIGNED8 *pucUserName,
UNSIGNED8 *pucPassword,
UNSIGNED32 ulOptions,
ADSHANDLE *phConnect );
此外,您可以使用服务器端别名隐藏数据所在的路径。在帮助文件中查找它。很简单。
为了简化事情,请执行以下操作:
运行 广告服务器配置实用程序,转到“配置实用程序”选项卡,然后在其中转到“文件位置”选项卡。记下错误路径和断言日志路径。假设它是 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", "password", ADS_DEFAULT, &hConn);
如果您使用 Delphi 或其他某种语言,请确保检查已经为 API.
构建包装器的类
全部really-really有据可查:http://devzone.advantagedatabase.com/dz/WebHelp/Advantage11.1/index.html?ace_adsconnect60.htm
这在许多数据库中都非常简单,但我还没有找到通过网络在服务器模式下使用 Advantage 实现此目的的方法。
假设 2 台电脑:
- 服务器:运行优势数据库服务器,并包含一个数据库
- CLIENT:包含一个简单的应用程序,甚至只是 Advantage Architect。
如果包含此数据库的文件夹是通过 OS(网络共享,具有 read/write 权限)共享的,则建立连接是直接的。
但是,我正试图避免暴露网络共享。 例如,在 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
连接到第二个连接到我试过的第一个:
- \\服务器:6262\C:\Data\mydata.add
- \\服务器:6262\Data\mydata.add
- \\服务器:6262:C:\Data\mydata.add
none 其中有效。
请注意,我不是直接调用存储过程,而是使用 Delphi ADS 组件,这些组件肯定会在内部调用相同的存储过程。 我当然是作为远程连接(在服务器上启动了 ADS 服务器)。对于其他参数,我使用 TCP/IP 作为通信。类型和默认 ADSSYS / 空白密码。
考虑到此设置,连接到 C:\Data\mydata.add on \\SERVER 的路径是什么?
再次感谢
无需在共享文件夹中公开您的数据库。只有在使用 LOCAL 连接时,您才会这样做。如果使用 INTERNET 或 REMOTE,则只需使用 API AdsConnect60() 进行连接。在帮助文件中查找它。
UNSIGNED32 AdsConnect60( UNSIGNED8 *pucConnectPath,
UNSIGNED16 usServerTypes,
UNSIGNED8 *pucUserName,
UNSIGNED8 *pucPassword,
UNSIGNED32 ulOptions,
ADSHANDLE *phConnect );
此外,您可以使用服务器端别名隐藏数据所在的路径。在帮助文件中查找它。很简单。
为了简化事情,请执行以下操作: 运行 广告服务器配置实用程序,转到“配置实用程序”选项卡,然后在其中转到“文件位置”选项卡。记下错误路径和断言日志路径。假设它是 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", "password", ADS_DEFAULT, &hConn);
如果您使用 Delphi 或其他某种语言,请确保检查已经为 API.
构建包装器的类全部really-really有据可查:http://devzone.advantagedatabase.com/dz/WebHelp/Advantage11.1/index.html?ace_adsconnect60.htm