MS Access db через сетевой ресурс - PullRequest
2 голосов
/ 13 ноября 2009

У меня есть простой веб-сайт, которому нужно подключиться к базе данных доступа через общий ресурс unc.

Сервер представляет собой окно Windows 2003 с IIS 6. Соединение осуществляется через ODBC.

Мы получаем сообщение об ошибке «
» ОШИБКА [42000] [Microsoft] [ODBC Microsoft Access Driver] Неверный пароль.
ОШИБКА [IM006] [Microsoft] [Диспетчер драйверов ODBC] Ошибка SQLSetConnectAttr драйвера

Я предполагаю, что у сервера IIS нет доступа к общему ресурсу. Пул приложений работает в сетевой службе.

Как я могу это исправить?

UPDATE
Это просто странно. Если я проверил ReadOnly в конфигурации ODBC И никто больше не подключен к этой базе данных, то он работает.

Если кто-то еще присоединяется к нему, то выдает ошибку «HY000] [Microsoft] [ODBC Microsoft Access Driver] НЕ МОЖЕТ использовать« (неизвестно) »; файл уже используется»

Если я сниму флажок с конфигурацией только для чтения (без других изменений), появится надпись «Недействительный пароль».

Ответы [ 3 ]

2 голосов
/ 14 ноября 2009

Если я проверил ReadOnly в конфигурации ODBC И никто больше не подключен к этой базе данных, тогда она работает

Это предполагает, что у вас есть доступ для чтения к общему ресурсу, но нет доступа для записи.

1 голос
/ 15 ноября 2009

У меня нет такого опыта (я не считаю Jet / ACE подходящим хранилищем данных для веб-сайта), но я много знаю о Jet / ACE.

Тот факт, что когда вы устанавливаете только для чтения, вы получаете соединение, это говорит о том, что пользователь, на котором работает веб-сервер, не имеет прав на запись в открываемый файл (или, более вероятно, в папку, в которой он находится, и / или доля, которая делает его доступным по сети). Соединение только для чтения от одного пользователя не должно создавать файл LDB (файл блокировки записи). Если пользователь веб-сервера не имеет разрешения CHANGE для папки, в которой хранится MDB / ACCDB, он не сможет создать файл LDB и, следовательно, не сможет редактировать файл.

Кроме того, имейте в виду, что все операции с Jet / ACE используют имя пользователя. Очевидно, он будет использовать учетную запись администратора по умолчанию без пароля, но, возможно, вы попытались указать другую пару имя пользователя / пароль. В этом случае может случиться так, что вы используете неправильный файл рабочей группы или файл, отличный от того, который вы считаете подходящим.

1 голос
/ 13 ноября 2009

Это очень распространенная проблема. Один из способов исправить это - запустить пул приложений под пользователем домена, который имеет доступ к этому общему ресурсу, или сделать так, чтобы ваше веб-приложение имитировало пользователя домена, который имеет доступ к общему ресурсу:

Как получить доступ к сетевым файлам из приложений IIS

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...