Мы успешно использовали Advantage Database Server 9.1 (Netware) с индексными файлами DBF/CDX в течение нескольких лет через компоненты потокового компонента Delphi TDataSet
. (Это устаревшие данные, необходимые для целей статистики/отчетности.)SQL SELECT из локального клиентского подключения Получение данных сервера с помощью пути
Пару недель назад мы перешли от Netware к Win2K8 в качестве нашей сетевой операционной системы и перешли в ADS 9.1. Это нарушило функциональность запросов от локального клиента, которые выполняют запросы SELECT
по серверным базам данных.
Например, ниже запрос работал нормально с версией Netware АДА 9.1 в окне SQL ARC32, в бегущем с локальным подключением к свободным столикам в 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 - это не часть словаря данных. Это бесплатная таблица в месте, где есть доступ для чтения/записи к папке на сервере, где она хранится. Папка локального клиентского подключения полностью доступна (она используется для ежедневного тестирования приложений, используя локальное подключение к данным). Обычное приложение может запускаться на клиенте либо с данными локального соединения, либо с данными удаленного подключения без каких-либо проблем. Это только запрос из локального подключения для извлечения данных сервера, что является проблемой, и он работал правильно раньше. Единственное различие заключалось в переключении с Netware на Win2k8 как на ОС, так и на ADS, и согласно документированию (см. Ниже приведенный ниже файл справки) он все равно должен работать.
После перехода на версию Windows, АДС 9.1, оба указанных выше запросов потерпит неудачу с
Ошибка 7008: Указанная таблица, файл заметок, или индексный файл не удалось открыть. Имя таблицы \ MyServer \ Data \ MyRemoteDB.dbf (или S: \ Data \ MyRemoteData.dbf).
Мы повышены до ADS 10.10 на нашей системе на этой неделе (и к ADS 10.10 TDataSet
10,10 компонент, а), но выше запросы по-прежнему терпят неудачу.
Это просто не поддерживается в версии ADS для Windows? Документация показывает, что первая из них должна работать:
Буксировать буквы в путях имен таблиц можно только с помощью локального сервера Advantage. При использовании Advantage Database Server для NT или NetWare, полностью определенные пути должны использовать UNC (например, «\ server \ volume \ path \ table»), потому что оператор SQL анализируется на сервере, где буквы на стороне клиента не имеют смысла. Обратите внимание, что таблицы, на которые ссылаются, должны быть заключены в двойные кавычки или [] (скобки), поскольку они содержат нестандартные символы.
Путь UNC должным образом окружен скобками []
, и в любом месте пути или имени таблицы нет пробелов. Я пытался с и без добавления расширения .dbf
; сообщение об ошибке остается неизменным.
Использует ли Advantage словарь данных для схемы? –
@ltn: Advantage никогда не «использовал словарь данных». Это вариант, который был доступен в последних версиях, но не использовать их по-прежнему так же жизнеспособен. Ссылка на 'free table' в моем вопросе указывает, что это не в словаре данных. :-) –
@TLama: Спасибо за помощь в форматировании. Я продолжаю забывать проверить и посмотреть, требуется ли нормальное форматирование для повышения языка. :-) –