Приложение VB6 при сбое подключения Citrix ODBC

У нас есть приложение Visual Basic 6, которое подключается к локальному файлу MS Access mdb для хранения некоторых значений во время обработки работы. Соединение с этим файлом осуществляется через пользовательское соединение DSN ODBC. Мы определили, что путь соединения действителен. Однако время от времени и, казалось бы, в случайное время вызовы этого файла mdb завершаются с ошибкой ODBC с сообщением о том, что путь недействителен. Путь сообщается как «нулевой». В других случаях мы получаем сообщение «ошибка диска или сети». По-видимому, нет никакой согласованности в том, почему и как возникают эти ошибки.

Существуют ли какие-либо значения реестра или конфигурации, на которые следует обратить внимание, чтобы определить источник этой проблемы? Файл никуда не исчезает с сервера, поэтому мы склоняемся к тому, что проблема связана с конфигурацией ODBC.

Приложение VB работает под управлением Citrix на сервере Windows 2003 (32-разрядная версия).


person Timbuck    schedule 10.07.2013    source источник
comment
Если вы подключаетесь к этой базе данных Access по сети, вы можете получить массу интересных эффектов. Базы данных Access легко повреждаются. Убедитесь, что после того, как вы столкнулись с подобным отключением, вы уплотнили и восстановили его на всякий случай.   -  person Paul    schedule 10.07.2013
comment
На самом деле файл базы данных Access находится на том же устройстве.   -  person Timbuck    schedule 10.07.2013
comment
Похоже, у вас либо ненадежный локальный диск, либо какое-то столкновение между пользователями, пытающимися удалить и воссоздать эту базу данных. Вы хотя бы создаете его для каждого пользователя, например, в профиле пользователя (LocalAppData)? Или, если нет, используете ли вы уникальные имена на основе имени пользователя или App.ThreadID или чего-то еще?   -  person Bob77    schedule 11.07.2013
comment
На самом деле файл базы данных Access находится на том же устройстве. – Timbuck – Итак, вы подключаетесь к серверу с помощью клиента или используете сервер напрямую (т. е. клавиатуру и монитор, подключенные к серверу)?   -  person Paul    schedule 11.07.2013
comment
Подключаемся к серверу через сеанс Citrix с отдельных устройств. Файл базы данных создается в профиле пользователя.   -  person Timbuck    schedule 11.07.2013


Ответы (1)


Я получил ту же ошибку о нулевой базе данных в классическом приложении VB 6, но не использовал DSN, и всякий раз, когда я видел эту ошибку, это обычно происходило при запросе поврежденной таблицы. Когда вы в последний раз уплотняли и очищали базу данных?

Кроме того, ошибка в сочетании с дисковой или сетевой ошибкой может быть связана с правами на запись и citrix, как если бы она не могла записать файл .ldb или файл блокировки базы данных.

Заглядывали ли вы в свое средство просмотра событий после того, как произошла одна из этих ошибок, чтобы увидеть, прольет ли это больше света на ошибку, происходящую в то же время?

person rBg    schedule 10.07.2013
comment
Чтобы добавить некоторую информацию, мы уничтожаем файл базы данных и заново создаем новый каждый раз, когда пользователь перезапускает наше приложение — якобы для того, чтобы попытаться предотвратить такое повреждение (я предполагаю, что приложению 15 лет, и я Я был здесь 5 лет.) Файл mdb представляет собой единую таблицу с одной строкой в ​​ней, используемую в качестве временного пространства. - person Timbuck; 10.07.2013