Строка подключения только для чтения к базе данных access



Я пытаюсь подключиться к файлу базы данных Access с помощью системы.Данные.Oledb для.Метод oledbconnection. Мне нужно подключиться в режиме только для чтения, потому что другое приложение использует его в то же время. Я могу подключиться к базе данных в режиме чтения / записи без проблем, но не могу нигде найти правильную строку для readonly.



Я пробовал:



Поставщик=Microsoft.АС.Oledb для.12.0; Источник Данных={0}; Persist Security Info=False; Mode=Read



Поставщик=Microsoft.АС.Oledb для.12.0; данные Источник={0};сохранять сведения о безопасности=false;в расширенных свойств="Толькочтение=истина;"



Спасибо.



Редактировать:



(Мне следовало бы вложить больше информации в первоначальный вопрос.)



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



Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Persist Security Info=False;Mode=Read


Я бы получил следующую ошибку:



System.Data.OleDb.OleDbException (0x80004005): The Microsoft Office Access database engine cannot open or write to the file '{0}'. It is already opened exclusively by another user, or you need permission to view and write its data.


Мой приложение выполняется в службе windows под учетной записью локальной системы.

612   2  

2 ответов:

Я думаю, что это должно быть обработано либо пользовательскими разрешениями, которыми будет управлять администратор БД, либо различными типами курсоров для ваших наборов записей, которыми вы будете управлять. Я не думаю, что строка подключения определяет режим доступа, она просто доставит вас туда. ;)

Реальная проблема заключается в том, что Excel оставляет соединение открытым до тех пор, пока файл не будет закрыт.

В Excel 2007+ для параметра MaintainConnection по умолчанию установлено значение true. Вам нужно зайти в Редактор vb и использовать код, чтобы превратить его в false. Я не видел способа сделать это через визуальный интерфейс. Даже если вы установите строку подключения только для чтения, она заблокирует базу данных доступа (по моему опыту).

Для соединения со сводной таблицей:

Sheets("sheet1").PivotTables("pivottable1").PivotCache.MaintainConnection = False

Для QueryTable:

Range("A2").Select
Selection.ListObject.QueryTable.MaintainConnection = False
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False

Установив значение false, таблица подключится, выполнит команду, а затем отключится, отпустив блокировку.

Comments

    Ничего не найдено.