多年来,我们一直通过 Delphi后代组件成功地将Advantage Database Server 9.1 (Netware) 与 DBF/CDX 索引文件一起使用。TDataSet
(这是统计/报告目的所需的遗留数据。)
几周前,我们从 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
请注意,它是一个自由表- 它不是数据字典的一部分。它是一个空闲表,位于对存储它的服务器上的文件夹具有读/写访问权限的位置。本地客户端连接的文件夹是完全可访问的(它用于每天测试应用程序,使用与数据的本地连接)。正常的应用程序可以在客户端上针对本地连接数据或远程连接数据运行而不会出现任何问题。只是来自本地连接的查询以检索服务器数据是一个问题,并且之前它工作正常。唯一的区别是操作系统和 ADS 从 Netware 切换到 Win2k8,根据文档(请参阅下面引用的帮助文件内容),它应该仍然可以工作。
切换到 ADS 9.1 的 Windows 版本后,上述两个查询都失败并显示
错误 7008:无法打开指定的表、备忘录文件或索引文件。表名 \MyServer\Data\MyRemoteDB.dbf(或 S:\Data\MyRemoteData.dbf)。
本周我们在系统上升级到 ADS 10.10(以及 ADS 10.10 TDataSet
10.10 组件),但上述查询仍然失败。
这在 Windows 版本的 ADS 下根本不支持吗?该文档使第一个看起来应该可以工作:
表名路径中的驱动器号只能用于 Advantage Local Server。当使用适用于 NT 或 NetWare 的 Advantage Database Server 时,完全限定的路径必须使用 UNC(例如,“\server\volume\path\table”),因为在客户端驱动器号没有意义的服务器上解析 SQL 语句。请注意,像这样引用的表必须用双引号或 [](括号)括起来,因为它们包含非标准字符。
UNC 路径正确地用[]
括号括起来,并且路径或表名中的任何位置都没有空格。我尝试过添加和不添加.dbf
扩展名;错误消息保持不变。