gpt4 book ai didi

delphi - 从本地客户端连接中检索带有路径的服务器数据的SQL SELECT

转载 作者:行者123 更新时间:2023-12-03 18:32:31 25 4
gpt4 key购买 nike

通过Delphi TDataSet后代组件,我们已经成功将Advantage Database Server 9.1(Netware)与DBF / CDX索引文件一起使用了。 (这是用于统计/报告目的的旧数据。)

几周前,我们从Netware切换到Win2K8作为我们的网络操作系统,并移至ADS 9.1。这破坏了本地客户端对服务器数据库执行SELECT查询的查询功能。

例如,下面的查询在ARC32的SQL窗口中与ADS 9.1的Netware版本配合使用时效果很好,并且在本地连接到C:\Data中的可用表:

INSERT INTO MyLocalDB 
SELECT TOP 10 * FROM [\\MyServer\Data\MyRemoteDB.dbf] WHERE somecondition


相同的查询使用映射到服务器目录的驱动器来工作:

INSERT INTO MyLocalDB 
SELECT TOP 10 * FROM [S:\Data\MyRemoteDB.dbf] WHERE somecondition


请注意,它是 free table-它不是数据字典的一部分。它是一个自由表,位于具有对该服务器上存储该文件夹的文件夹的读写权限的位置。本地客户端连接的文件夹是完全可访问的(使用数据的本地连接每天用于测试应用程序)。普通应用程序可以针对本地连接数据或远程连接数据在客户端上运行,而不会出现任何问题。这只是一个从本地连接中查询到的检索服务器数据的问题,并且以前可以正常工作。唯一的区别是OS和ADS都从Netware切换到Win2k8,并且根据文档(请参阅下面引用的帮助文件内容),它仍然可以正常工作。

切换到Windows版本的ADS 9.1后,上述两个查询均失败,并显示


错误7008:无法打开指定的表,备忘录文件或索引文件。表名称\ MyServer \ Data \ MyRemoteDB.dbf(或S:\ Data \ MyRemoteData.dbf)。


本周,我们已在系统上升级到ADS 10.10(以及ADS 10.10 TDataSet 10.10组件),但是上述查询仍然失败。

Windows版本的ADS是否完全不支持此功能?该文档使第一个看起来应该可以工作:


表名称路径中的驱动器号只能与Advantage Local Server一起使用。当将Advantage Database Server用于NT或NetWare时,标准路径必须使用UNC(例如“ \ server \ volume \ path \ table”),因为SQL语句是在客户端驱动器号没有意义的服务器上解析的。请注意,这样引用的表必须用双引号或[](括号)括起来,因为它们包含非标准字符。


UNC路径正确地用 []括起来,并且路径或表名中的任何地方都没有空格。我尝试过不加 .dbf扩展名;错误消息保持不变。

最佳答案

我怀疑您在使用专有锁定时遇到了更改。对Advantage Database Server进行了更改,以使默认行为在使用专有锁定时完全拒绝对其他应用程序的访问。您可以使用名称混乱的NONEXCLUSIVE PROPRIETARY LOCKING配置设置禁用它。我认为,如果将该配置值设置为1,则它将按需要运行。

将配置设置更改为1并重新启动ADS之后,本地服务器连接应该能够对服务器已打开的DBF表进行只读访问。

关于delphi - 从本地客户端连接中检索带有路径的服务器数据的SQL SELECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15560466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com