Microsoft Access требуется для доступа к базе данных С# на компьютерах конечных пользователей?

Глупый вопрос, наверное.

Я разработал приложение на своем компьютере, которое использует базу данных Microsoft Access (.mdb) для доступа к определенной информации и заполнения таблицы данными мониторинга с помощью OLEDb.

Приложение отлично работает на моей машине, но когда я ставлю релиз на тестовые машины (без MS Access), оно вылетает. Интересно, что если бы я запустил приложение на тестовой машине с только что переименованным именем файла базы данных, оно загрузилось бы, как должно, хотя и без данных.

Кажется, я получаю исключение UnauthorizedAccessException, которое еще больше затуманивает мое замешательство.

И на машине разработки, и на машине, на которой я ее тестирую, установлена ​​.NET 3.5.

Я бы ожидал, что в ответ на мой вопрос вы услышите «Нет», но какого черта — должен ли на тестовой машине быть установлен MS Access?

С Уважением


person Ric    schedule 06.11.2009    source источник
comment
Как разработчик, вы должны понимать разницу между Access (платформой для разработки приложений для баз данных) и Jet/ACE, механизмом базы данных по умолчанию, который является механизмом базы данных по умолчанию для Access. Ваш вопрос касается Jet/ACE. К мс офису отношения не имеет. Для формата MDB у вас не должно возникнуть проблем, так как Jet устанавливается на все версии Windows, начиная с 2000 (входит в состав дистрибутива ОС). Однако драйверы OLEDB для Jet могут быть не установлены или несовместимы.   -  person David-W-Fenton    schedule 07.11.2009


Ответы (6)



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

person James    schedule 06.11.2009

Убедитесь, что у вас установлены последние версии драйверов Jet 4 OLEDB. Также может быть проблема, если вы запускаете приложение из сетевой папки (тогда оно запускается с ограниченными правами).

person MicSim    schedule 06.11.2009
comment
MDAC не включал Jet в течение многих лет именно потому, что Jet является частью ОС (начиная с Win2000), но я не знаю, включает ли текущий MDAC драйверы Jet 4 OLEDB (которые, похоже, используются OP, на основе тега OLEDB). - person David-W-Fenton; 07.11.2009
comment
Ты прав. Спасибо, что указали. Я имел в виду водителей реактивных самолетов. - person MicSim; 07.11.2009

Вы говорите, что получили UnauthorizedAccessException. Я бы сначала проверил права на чтение/запись для файла .mdb и его местоположения.

Если вы работаете как служба, помните, что они работают под учетными записями с более ограниченным доступом.

person Simon P Stevens    schedule 06.11.2009

Вам не нужен сам доступ. Вам потребуются JET-драйверы и связанные с ними файлы, по крайней мере, не менее актуальные, чем те, что установлены на вашей машине для разработки — если вы перерабатываете старую машину для тестирования, это может быть проблемой.

Однако это действительно похоже на проблему с разрешениями либо в самом файле базы данных, либо внутри файла, если вы используете механизмы безопасности Access.

person Larry Lustig    schedule 06.11.2009
comment
На самом деле DAO 3.6 и Jet 4.0 были установлены как часть ОС Windows, начиная с Windows 2000. Если предположить, что это то, что вы имели в виду под драйверами Jet. - person Tony Toews; 06.11.2009
comment
Но вопрос помечен как OLEDB, и, насколько я знаю, драйверы Jet 4 OLEDB не устанавливаются по умолчанию как часть установки Windows. Да? Нет? - person David-W-Fenton; 07.11.2009
comment
Джеймс, а? Jet 4.0 устанавливается по умолчанию в Windows 2000, XP, Vista и 7. - person Tony Toews; 07.11.2009
comment
Jet 4.0 не устанавливается по умолчанию в Windows 2003 или XP. Для XP его необходимо загрузить по адресу microsoft.com/downloads/en/ и для 2003 г. на microsoft.com/downloads/en/ - person Jalal; 28.12.2010

Выяснилось, что проблема была в аппаратной части. Один из последовательных портов на карте, которую я использовал, вышел из строя, когда его перенесли на новую машину.

Оказывается, проблема не была связана с базой данных, как предполагало исключение.

Тем не менее, были подняты некоторые интересные моменты по JET, которые могут быть полезны всем, у кого есть проблемы с доступом к базе данных.

Спасибо за помощь ребята.

person Ric    schedule 11.11.2009