Не удается получить доступ к файлу DBF, если к нему обращается другое приложение - PullRequest
0 голосов
/ 16 декабря 2011

Я пытаюсь получить данные из файлов DBF из службы .NET REST. Эти файлы являются бизнес-данными другого приложения. Это довольно старое приложение, поэтому я должен справиться с dBase / FoxPro.

Я только хочу прочитать данные. Я не заинтересован в обновлении / вставке.

Мой сервис работает нормально, и я могу получать сообщения JSON с данными. Проблема возникает, когда другое приложение работает. Если я пытаюсь получить доступ к данным во время работы другого приложения, я получаю сообщение «ОШИБКА [HY000] [Microsoft] [ODBC dBase Driver] Внешняя таблица не в ожидаемом формате». Пока я могу получить доступ к данным, когда другое приложение не запущено, сообщение об ошибке звучит странно.

Другое программное обеспечение, такое как проводник DBF, может получать доступ к данным при работающем другом приложении, поэтому я считаю, что в строке подключения или драйвере должна быть неправильная конфигурация.

Кто-нибудь знает, как настроить соединение ODBC для доступа к этим таблицам, когда они открыты другими приложениями?

Заранее спасибо!

P.S .: Моя строка подключения:

@"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" + pathtoDBFFile + ";";

Ответы [ 2 ]

0 голосов
/ 16 декабря 2011

Во-первых, я бы не стал использовать драйвер dBASE, а вместо этого скачал и использовал драйвер Visual FoxPro OleDb от MS.

Кроме того, в строке подключения можно установить для параметра «Эксклюзивное использование» по умолчанию значение «Нет», как в следующем примере с ConnectionStrings.com. Часть «Драйвер» неверна для провайдера OleDb, но может помочь контекст «Исключительно = Нет», «Удалено = Нет» и любые другие параметры, которые вы можете добавить туда.

Драйвер = {Microsoft Visual FoxPro Driver}; SourceType = DBC; SourceDB = c: \ myvfpdb.dbc; Эксклюзив = Нет; не NULL = NO; Разобрать = машина; BACKGROUNDFETCH = NO; DELETED = NO;

Другая ссылка, которая ссылается на соединение с таблицами VFP, и ссылка для загрузки поставщика VFP OleDB.

0 голосов
/ 16 декабря 2011

Это типично для приложений DBF.Каждое приложение, которое использует DBF, может блокировать его при необходимости (так называемый «эксклюзивный режим»)

Я предлагаю вам обойти эту проблему, если вы создадите временную копию нужного вам файла.,Следствием этого подхода является то, что ваша система становится асинхронной, и вам необходимо снова скопировать этот DBF, чтобы обновить состояние.

...