Строка подключения только для чтения к базе данных 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 под учетной записью локальной системы.
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