Невозможно использовать файл уже используется access
из delphi - ADOConnection1
Provider=MSDASQL.1;Persist Security Info=False;Data Source=daf1;Extended Properties="DSN=daf;DBQ=C:\MyWebForm\d1.mdb;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;"
из VB - OdbcConnection1
MaxBufferSize=2048;FIL=MS Access;DSN=monit;PageTimeout=5;UID=admin;DriverId=25
ADOConnection.Mode ставлю cmShareDenyNone все равно пишет
ERROR [IM006] [Microsoft][Диспетчер драйверов ODBC] Ошибка SQLSetConnectAttr драйвера
ERROR [HY000] [Microsoft][Драйвер ODBC Microsoft Access] Невозможно использовать "(нет данных)"; файл уже используется.
readonly/монопольность может быть прописан в DSN, может сам файл базы запрещено редактировать, а может нет возможности в папке с базой файл блокировок создать.
это надо сначала проверять.
соединяюсь из VB (страница aspx) с БД через Microsoft.Jet.OLEDB соединение
Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database Locking Mode=1;Data Source="C:\MyWebForm\d1.mdb";Mode=Share Deny Write;Jet OLEDB:Engine Type=5;Provider="Microsoft.Jet.OLEDB.4.0";Jet OLEDB:System database=;Jet OLEDB:SFP=False;persist security info=False;Extended Properties=;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Create System Database=False;Jet OLEDB:Don"t Copy Locale on Compact=False;User OLEDB:Global Bulk Transactions=1
программа на дельфи
в дельфи строка подключения
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyWebForm\d1.mdb;Mode=ReadWrite;Persist Security Info=False
невозможно выполнение aspx страницы при запущенной программе на дельфи
результат работы aspx страницы
> Это часть сообещения <"";> таких баз конечно нет.
извините мне кажеться если бы не было то не писала бы файл уже используется
и как дельфи может убивать БД?
спасибо
где про это почитать??
потому что встречал что даешь "все" полный доступ и перестает прога работать
У меня есть разделенная база данных в MS Access 2010 в Windows 7.
Задний конец находится на сетевом диске в папке, где только у некоторых есть права на запись; у всех есть права на чтение.
У каждого пользователя есть своя копия переднего конца, хранящаяся на их локальной машине.
Оба BE и FE должны открываться как общие, а не эксклюзивные для всех пользователей.
Если пользователь с полномочиями только для чтения пытается подключиться, а другой пользователь с разрешениями только для чтения включен, они могут нормально функционировать.
Если пользователь с разрешениями на запись пытается открыть базу данных, пока пользователь с правами на доступ к ней открыт, он открывается также для чтения для этого пользователя.
У всех пользователей разделенной базы данных нужен полный доступ? Я действительно не хочу, чтобы все могли вносить изменения. Что-нибудь я могу сделать, чтобы заставить это работать?
Проблема, безусловно, связана с тем, что клиенты только для чтения не могут управлять файлом блокировки .laccdb , поскольку у них нет права на запись в общую папку, в которой находится файл базы данных.
Когда база данных открывается в режиме общего доступа, каждый клиент создает или обновляет файл блокировки.
Вероятно, поскольку клиенты только для чтения не могут создать файл блокировки, они возвращаются, полагая, что они находятся в эксклюзивном режиме.
После того, как клиент полного доступа создает файл блокировки, любой последующий клиент попытается его использовать, а клиенты только для чтения потерпят неудачу, так как они не могут обновить блокировку.
Некоторая документация, касающаяся файлов блокировки: Введение в файлы .ldb
Если вы хотите решить свою проблему, вы должны предоставить полный доступ к папке для всех клиентов, но вы можете ограничить доступ к самому файлу базы данных .accdb к группе клиентов, которые не должны иметь возможность изменять данные в нем.
В качестве альтернативы, если вы не используете возможности Access 2007/2010, вы можете вернуться к использованию более старого файла .mdb в качестве бэкэнд и использовать свои функции безопасности группы в старом стиле.
В конечном счете, если вы действительно хотите контролировать доступ, вам может потребоваться сворачивать собственную схему безопасности внутри клиента, заставляя пользователей входить в систему (или использовать их личность своей машины) и обновлять свои формы, свойства редактирования данных в зависимости от того, что разрешено делать конкретному пользователю/машине.
Может быть вот это поможет:
Аварийная ситуация.
Мистическая ошибка “Файл уже используется”
Теперь, когда БД с многопользовательской поддержкой создана, вы рассчитываете, что она будет поддерживать толпу пользователей, поэтому вас приводит почти в шоковое состояние таинственная ошибка "Файл уже используется" ("File already in use"). Разве не для того создаются БД с многопользовательской поддержкой, чтобы оставаться дос¬тупными, даже когда кто-нибудь их использует?
Эта ошибка возникает, поскольку кто-то уже открыл БД с монопольным доступом (Exclusive mode). Монопольный доступ (см. разд. "Открытие БД с монопольным досту-пом " далее в этой главе) позволяет одному пользователю связаться с БД и заблокиро-вать попытки всех остальных. Хитрость заключается в том, что при определенных об-стоятельствах программа Access может применять монопольный доступ, даже если вы ее об этом не просили.
Наиболее распространенная проблема — отсутствие у пользователя подходящих разре¬шений на папку с общим доступом, в которой хранится многопользовательская БД. (Разрешения (Permissions) — составляющая системы безопасности ОС Windows, опре¬деляющая способ использования файлов и папок тем или иным пользователем.) В осо¬бенности эта проблема проявляется, когда вы первым открываете БД и не имеете раз¬решения на создание новых файлов. В этой ситуации программа Access не может создать файл с расширением laccdb. Этот файл отслеживает блокировки (см. разд. "Применение блокировок для предотвращения наложения обновлений" далее в этой главе). Без файла с расширением laccdb Access не может координировать работу многих поль¬зователей. Поэтому программа тихо переходит в режим монопольного доступа, который блокирует остальные обращения к БД.
Понятно, что решением может быть точное определение всех, нуждающихся в исполь-зовании БД, и гарантированное предоставление им разрешения на создание новых фай¬лов в папке с общим доступом. Конечно, все было бы гораздо проще, если бы программа Access могла предупредить вас о том, что не может нормально открыть БД и вынуждена применить монопольный доступ.
Пожалуйста, выделяйте текст программы тегом [сode=pas] . [/сode] . Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля. Обязательно указание:
1) типа базы данных (Paradox/Oracle/Interbase и т.п.)
2) способа доступа к базе данных (ODBC/ADO/DAO/BDE и т.п.)
Например: Paradox/BDE, MS Access/ADO
из VB - OdbcConnection1
MaxBufferSize=2048;FIL=MS Access;DSN=monit;PageTimeout=5;UID=admin;DriverId=25
Надо указать путь к с system.mdw , или БД захвачена монопольно.
Надо указать путь к с system.mdw , или БД захвачена монопольно.
быстрее всего БД захвачена монопольно. ведь проект aspx не препятствует открытию базы программой на Delphi
как отменить монополию?
спасибо
Программа на Delphi открывает БД если запущен проект на aspx ? Если да то значит не монопольно.
а что тогда мешает работать проекту на aspx с БД если запущена программа на Delphi (работает с этой же БД)
проекту на aspx работает, запускаю программу на Delphi после этого при обращении с aspx странице
что блокирует программа на Delphi ?
спасибо
ADOConnection.Mode ставлю cmShareDenyNone
проект на сервере отработал (он выдает только содержание некоторых полей базы и закрылся и проверить мешает ли он работе программе на Delphi как?)
а что тогда мешает работе aspx с БД при работающей с этой же БД программе на Delphi?
ADOConnection.Mode ставлю cmShareDenyNone
спасибо
Ошибка при выполнении SQLSetConnectionOption. Во время выполнения Менеджер драйверов вызвал ф-цию SQLSetConnectionOption выполнение которой привело к ошибке.
cmShareDenyNone - открытие других соединений с разрешениями запрещено. если запускаешь два вариант программы на delphi одновременно то они работают с этой же базой нормально а aspx страницу не пускает (хотя aspx только читает из базы и ничего в нее не пишет)
в чем дело?
спасибо
дельфи блокирует БД и aspx не пускает
хотя еще 2 копии одной программы на дельфи используют одну БД без проблем
aspx нужно только чтение из этой БД
как разрешить эту проблему?
спасибо
ADO
Если у Вас Delphi 5 Enterprise или Delphi 5 Professional с ADO Express, то Вы можете использовать компонент ADOTable и в его свойстве ConnectionString настроить (build) подключение как базе данных MS Access. Например:
А в в дельфи строке подключения я не вижу ято включен режим только для чтения (по умолчанию зпаись/чтение).
закроешь дельфи - aspx работает
две копии дельфи вместе работают c одной БД
две копии aspx страницы вместе работают c одной БД
а дельфи с aspx с одной БД - нет
спасибо
Читайте также: