Oc-windows.ru

IT Новости из мира ПК
20 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Блокировка файла невозможна access

Блокировка файла невозможна access

ситуация: есть определенные справочные сведения (порядка 10 МБ) в формате MS ACCESS. для просмотра (подчеркиваю для просмотра) написал утилитку использующую Jet 4.0. все это дело записываем на CD RW и при попытке открыть базу получаем сообщение «Блокировка файла не возможна». в ConnectionString пишу Mode=Read;

PS. копирование на жесткий диск пожалуйста не предлагать — за день приходится обойти не 1-2 компа, а побольше — надоедает за собой удалять :)))


sniknik ( 2002-08-23 15:09 ) [1]

Блокировка файла невозможна. (Ошибка 3050)
Операционная система запрещает ядру Microsoft® Jet создание файла блокировок (.LDB) в том каталоге, где находится файл базы данных (.MDB). Для открытия базы данных необходимо обладать привилегиями записи в каталог, содержащий эту базу данных. Кроме того, данная ошибка может возникнуть при использовании средства пассивного завершения работы/управления подключением, когда база данных открыта в монопольном режиме.

Mode=Read? поставь Share Deny None а то может ты другим юзерам кислород перекрываеш и ошибка от них.


savva ( 2002-08-23 16:33 ) [2]

да не.. пользователей тут мало.. одна моя программа..
а вот то что необходимо обладать привилеггиями записи в каталог — это уже хуже. на компакт особо не попишешься :))

никак этот неприятный для меня момент обойти нельзя? я хочу тока читать.


sniknik ( 2002-08-23 16:51 ) [3]

в том то и дело он на компакт писать не должен а пишет туда где MDB лежит.
Или он у тебя на CD (база)? и ты один? тогда Mode=Share Exclusive пробуй он в этом случае файл не создает (реально попробовать на CD сам понимаеш не могу может еще чего вылезет).


savva ( 2002-08-26 09:41 ) [4]

я вернулся после выходных :)))
да, база на CD и из пользователей я один.
ошибка изменилась, но добиться результата не получилось: теперь говорит что файл уже открыт другим пользователем для монопольного доступа или требуется разрешение на просмотр данных.


sniknik ( 2002-08-26 10:28 ) [5]

я тоже :-), дома не халява дома жалко посему инетом почти не пользуюсь.

добится чтения базы с CD можно, сам Access читает только предупреждение дает типа только для чтения (я тут откопал базу на сидироме, проверил).
добьешся напиши как.


sniknik ( 2002-08-26 10:42 ) [6]

Кстати до меня тут дошло, раз база на CD есть то и подключится к ней можно попробовать. И. Без проблем. ставь тока Share Deny None и боле ничаво. у меня получилось.


savva ( 2002-08-26 10:56 ) [7]

а у меня проблемы.. перепробовал все константы для Mode.
если не секрет:
1) атрибуты у файла базы только ReadOnly?
2) может ли повлиять не закрытая сессия компакта — пока не исравлю программу — не охота сессию закрывать :))


savva ( 2002-08-26 10:57 ) [8]

и еще:
база запаролена?

если не военная тайна — мона поглядеть ConnectionString? может я ее не так формирую..


savva ( 2002-08-26 12:04 ) [9]

либо такая фигня тока у меня. нашел на компакте с делфи базу акцесс — подключаюсь первый раз из делфи в режиме разработке — все нормально.. компилю, запускаю — фига с маслом.. ща как истинный программист попробую выйти и зайти :))


sniknik ( 2002-08-27 10:22 ) [10]

Извини пришлось отъехать 🙂 работать в конце концов тоже надо 🙂
База не паролена. но не думаю что это связано скорей всего и пароленная откроется, на случай если еще актуально,
вот ConnectionString с которым я открываю (E — CDRoom, открываю прогой с F -другой CD, работает в рантайме прога скомпилированна)
Prov >

Свойство RecordLocks (Блокировка записей)

Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).

Применение

С помощью свойства RecordLocks (Блокировка записей) можно определить, как выполняется блокировка записей и что происходит, когда два пользователя одновременно пытаются изменить одну и ту же запись. Значение данного свойства доступно для чтения и записи.

выражение (обязательно). Выражение, возвращающее один из объектов из списка «Применение».

Замечания

Когда вы редактируете запись, Microsoft Office Access 2007 может автоматически блокировать ее, чтобы не допустить ее одновременного изменения другими пользователями.

Формы: определяет, как блокируются записи в базовой таблице или запросе при обновлении данных в многопользовательской базе данных.

Отчеты: определяет, блокируются ли записи в базовой таблице или запросе во время просмотра или печати отчета.

Читать еще:  Субд access реферат

Запросы: определяет, блокируются ли записи в запросе (обычно это запрос на изменение в общей базе данных) во время его выполнения.

Примечание: Свойство RecordLocks (Блокировка записей) используется только в формах, отчетах и запросах в базах данных Microsoft Access (MDB или ACCDB).

Свойство RecordLocks может принимать следующие значения:

(Значение по умолчанию.) В формах одну и ту же запись могут редактировать несколько пользователей одновременно. Такую блокировку также называют оптимистичной. Если два пользователя пытаются сохранить изменения в одной и той же записи, Access выводит сообщение для пользователя, пытающегося сохранить запись вторым. Этот пользователь может отказаться от изменения записи, скопировать ее в буфер обмена или заменить правки, внесенные другим пользователем. Данное значение обычно используется в формах, доступных только для чтения, или в однопользовательских базах данных. Оно также применяется в многопользовательских базах данных, чтобы несколько людей имели возможность одновременно изменять одну и ту же запись.

В отчете записи не блокируются во время его просмотра или печати.

В запросе записи не блокируются во время его выполнения.

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

(Только для форм и запросов.) Страница записей блокируется, как только пользователь начинает изменять любое поле записи, и остается заблокированной, пока он не перейдет к другой записи. В результате запись может редактироваться только одним пользователем одновременно. Такую блокировку также называют пессимистичной.

Примечание: Это свойство можно задать с помощью страницы свойств формы, макроса или кода Visual Basic для приложений (VBA).

Примечание: Изменение свойства RecordLocks открытой формы или отчета приводит к повторному автоматическому созданию набора записей.

Значение «Отсутствует» можно применять для форм в том случае, если только один пользователь работает с базовыми таблицами или запросами и вносит изменения в базу данных.

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

Параметр «Всех записей» можно использовать, чтобы запретить внесение изменений в данные после начала предварительного просмотра или печати отчета либо выполнения запроса на добавление, удаление, обновление и создание таблицы.

В режиме формы и режиме таблицы в области маркировки каждой заблокированной записи изображается индикатор блокировки.

Чтобы изменить значение свойства RecordLocks, используемое по умолчанию для форм, нажмите кнопку Microsoft Office и щелкните Параметры Access. В диалоговом окне Параметры Access нажмите кнопку Дополнительно и выберите нужный вариант в разделе Блокировка по умолчанию.

Данные в форме, отчете или запросе из базы данных ODBC обрабатываются так, как если бы было выбрано значение «Отсутствует», независимо от настройки параметра RecordLocks.

Пример

В следующем примере для свойства RecordLocks формы Employees задается значение «Изменяемой записи» (страница записей блокируется, как только пользователь начинает изменять любое поле записи, и остается заблокированной, пока он не перейдет к другой записи).

Access. Особенности работы в многопользовательском режиме.

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

Важно помнить, что работа с базой данных в многопользовательской среде может вызывать пробле­мы, связанные с блокировкой данных и конфликтами доступа к ним. Подавление сообщений об ошиб­ках, недостаточное внимание к подобным вопросам либо надежда на благоприятное стечение обстоятельств не решает проблему. Несмотря на кажущуюся сложность работы в многопользовательской среде, понять механизм действия блокировки данных и способ обслуживания механизмом Jet нескольких пользователей достаточно просто. Пренебрежение подобными вопросами, как правило, приводит к возникновению бо­лее сложных проблем, затрагивающих пользователей, клиентов и влияющих на репутацию разработчика. Если для приложения не предусмотрено эффективное решение вопросов работы в многопользовательской среде, при работе с ним неизбежно будут возникать следующие проблемы:

• Новые записи не сохраняются. После ввода информации пользователь обнаруживает, что в базе данных она не появилась. Если подобная ошибка не повторяется, это говорит не об отсутствии проблемы, а о ненадежности приложения.

• Изменения существующих записей не сохраняются. Пользователь может даже не заметить, что вне­сенные им изменения не сохранились. Однако в дальнейшем может оказаться, что либо таблица ито­говых данных отсутствует, либо в инвентарном списке слишком много элементов, или может случиться так, что заказ важного клиента будет отправлен по неверному адресу. Подобные серьез­ные проблемы вполне могут оказаться не выявленными вовремя. Как правило, от них страдают посторонние люди.

Читать еще:  Почему не работает анимация в powerpoint

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

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

Для обслуживания нескольких пользователей приложение Access необходимо на файловом уровне кон­фигурировать по-разному. Каждый способ имеет свои преимущества и недостатки, некоторые из них пе­речисляются ниже.

• Сетевое размещение. В данной конфигурации единый MDB-файл располагается на сетевом серве­ре, и пользователи получают доступ к базе данных при обращении к серверу. Данные и выполня­емые модули могут содержаться в едином MDB-файле либо размещаться на файловом сервере в виде нескольких отдельных файлов. Преимуществом данной конфигурации является простота поддержки, поскольку при необходимости в обновлении нуждается лишь выполняемый файл. Однако, поскольку все формы, отчеты, модули, запросы, ЕХЕ-файлы Access, а также все библиотеки DLL и т.п. должны передаваться по сети на рабочую станцию, сетевой трафик неоправданно возрастает, а производительность значительно снижается. Вероятно, в подобных конфигурациях следует исполь­зовать связанные формы. Далее рассматриваются проблемы связывания форм с данными и возни­кающие при этом конфликты доступа.

• Разделенная база данных с размещенными в сети данными. Такая конфигурация по традиции на­зывается конфигурацией удаленной базы данных (отметим, что значение слова «удаленная» в чрез­вычайно динамичную эпоху Internet постепенно меняется и вскоре может устареть), поскольку данные отделены от выполняемого модуля или программного кода, хотя механизм баз данных и остается локальным. В отличие от конфигурации клиент-сервер, механизм баз данных Access на пользовательском ПК получает, обрабатывает, блокирует и снимает блокировку с данных, находя­щихся в MDB-файле на сетевом сервере. Работа в такой конфигурации зависит от механизмов баз данных одновременно работающих пользователей, а также от возможностей файлового сервера, касающихся поддержания сетевого графика. До настоящего времени при размещении приложений баз данных Access предпочтение отдают именно этому методу. Его преимуществом является высо­кая производительность и управляемость при корректном использовании. Поскольку при размеще­нии данных в сети по каналам связи передаются только они, сетевой трафик значительно снижается. Основной недостаток данной конфигурации заключается в том, что на каждом клиентском ПК необходимо устанавливать Access и выполняемый MDE- (скомпилированный вариант базы данных MDB) либо MDB-файл, что осложняет поддержку приложения. Тем не менее, существуют спосо­бы решения подобной проблемы.

• Репликация. При использовании схемы репликации пользователи совместно обрабатывают данные, хотя данные на самом деле не являются общими, как это имеет место в схемах сетевого распре­деления или в разделенных базах данных. В схеме репликации каждый пользователь или небольшая группа пользователей имеет собственную копию данных, которые посредством механизма репликации Jet синхронизируются с другой базой или базами данных. Одно из преимуществ такой схемы, когда каждому пользователю предоставляется копия данных, состоит в полном исключении проблемы блокировки, но вместо них возникают проблемы репликации, степень сложности которых являет­ся практически такой же. Другим значительным преимуществом репликации является возможность асинхронного доступа к данным для отключенных от сети пользователей. Вместе с тем существует еще один недостаток такой схемы: при совместном использовании источника данных даже небольшой группой пользователей все же существует возможность возникновения как конфликтов доступа, так и проблем репликации.

• Конфигурация клиент-сервер. В Access 2000 появилась новая возможность создания клиент-сервер­ных приложений на базе проекта Microsoft Access. В такой конфигурации удаленными являются как данные, так и механизм баз данных. Если данными управляет SQL Server, Oracle или какой-либо иной сервер баз данных, расположенный на центральном компьютере, он также решает вопросы блокировки и проблемы работы в многопользовательской среде. Это не означает, что разработчик избавлен от необходимости решения всех связанных с ними задач, просто ему приходится иметь дело с иными наборами свойств, возможностей и правил. Основными преимуществами такой конфигу­рации являются высокая производительность, стабильность, возможность обслуживания большого количества пользователей и выполнения множества задач. Наибольший недостаток данной конфи­гурации состоит в высокой стоимости и значительной сложности.

В данной главе рассматриваются вопросы, которые являются общими для сетевых конфигураций: схе­мы разделенной базы данных и реализации архитектуры клиент-сервер. О репликации рассказывается в главе 22.

При использовании Access существует ряд установок на уровне базы данных (для форм, запросов, наборов записей) и на уровне выполняемого кода, которые требуют взаимного координирования в це­лях обеспечения надежного обслуживания приложением нескольких пользователей. В различных частях приложения представлены почти все обсуждаемые в главе темы. Как для разных приложений, так и в пределах одной программы возможно применение разных технологий, а также их комбинаций. Основой организации работы в многопользовательской среде является планирование, прогнозирование и тестирование.

Читать еще:  Готовая бд access

Access и способы блокировки в Jet

Механизм Jet имеет схему блокировки, которая позволяет эффективно обслуживать несколько пользо­вателей. При использовании Jet с Access, а не с VB или каким-либо иным инструментом разработки необходимо учитывать, что некоторые действия выполняются по умолчанию. Данный раздел посвящен изучению этих вопросов.

Основные сведения о блокировке

Перед использованием приложения многопользовательской базы данных его следует разместить таким образом, чтобы пользователи имели к нему доступ, а также настроить для совместного использования. Существует несколько способов достижения этой цели.

В диалоговом окне Options (Параметры), отображающемся при выполнении команд меню Tools Options (Сервис / Параметры), во вкладке Advanced (Другие) имеется параметр Default open mode (Режим откры­тия, определенный по умолчанию). Здесь можно определить режим открытия базы данных, т.е. должна ли она открываться для монопольного доступа (только для одного пользователя на весь сеанс работы) или для общего доступа.

Если выбран режим Exclusive (монопольный доступ), базу данных имеет право открывать только один пользователь. В этом случае Access изменяет заголовок LDB-файла, тем самым блокируя его (подробнее об этом см. в разделе «LDB-файл») и запрещая доступ к данным для всех других пользователей. Очевид­но, для многопользовательского приложения такая настройка использоваться не должна. Однако такие процедуры, как сжатие и восстановление, следует выполнять над базой данных, открытой для монополь­ного доступа.

Режим Shared (Общий доступ) позволяет открывать базу данных нескольким пользователям одновре­менно. При этом Access в момент открытия базы данных заносит информацию о подключившихся к ней пользователях в LDB-файл и задействует механизм блокировки и освобождения страниц и строк.

Эти и другие параметры можно задавать в командной строке во время запуска приложения Access. Некоторые из них перечислены в табл. 1.

Таблица 1 Параметры командной строки при запуске Access

База данных открывается для монопольного доступа. Данный параметр можно использовать даже тогда, когда для базы данных установлен режим Shared.

Блокировка файла невозможна access

На этом шаге рассмотрим настройку других параметров.

Для настройки параметров в окне Параметры имеется вкладка Другие (рис. 1.), содержащая следующие разделы:

Операции DDE. Позволяет установить следующие параметры:

  1. Пропуск команд DDE. Если данный флажок установлен, то команды DDE, поступающие из других приложений, игнорируются.
  2. Обновление связей DDE. Этот флажок устанавливается для обновления связей DDE с интервалом, указанным в поле Период обновления (с).

Режим открытия по умолчанию. Позволяет установить следующие параметры:

  1. Общий доступ. По умолчанию база данных будет открываться для общего доступа.
  2. Монопольный доступ. По умолчанию база данных будет открываться для монопольного доступа.

Блокировка по умолчанию. Управляет используемым по умолчанию режимом блокировки записей в сети. Позволяет установить следующие параметры:

  1. Отсутствует. Редактируемая запись не будет блокироваться.
  2. Всех записей. Происходит блокирование всех записей в редактируемой форме или таблице сразу после их открытия.
  3. Изменяемой записи. Блокируется только редактируемая запись.

Блокировка записей при открытии БД. Флажок устанавливается для использования блокировки на уровне записей в текущей базе данных по умолчанию. Если флажок снят, то используется по умолчанию блокировка на уровне страниц (при которой блокируются все записи на странице на диске). Если флажок установлен, блокировка на уровне записей становится стандартным режимом блокировки при доступе к данных через формы, объекты в режиме таблицы и программы, которые используют набор записей для переходов по записям. Это не относится к запросам на изменение и к программам, выполняющим массовые операции с помощью инструкций SQL.

Аргументы командной строки. Вводятся значения, которые должна возвращать функция Command.

Время ожидания OLE/DDE (c). Промежуток времени, после которого Microsoft Access повторяет неудачную попытку выполнения операций OLE или DDE, в пределах от 0 до 300 секунд.

Период обновления. Промежуток времени, после которого Microsoft Access автоматически обновляет записи в режиме таблицы или формы, в пределах от 1 до 32766 секунд.

Число повторов обновления. Число попыток сохранения измененной записи, если эта запись заблокирована другим пользователем (от 0 до 10).

Период обновления ODBC (c). Промежуток времени, после которого Microsoft Access автоматически обновляет записи, доступ к которым осуществляется по протоколу ODBC, в пределах от 1 до 32766 секунд. Данная настройка действует только для базы данных, используемой в режиме общего доступа в сети.

Период повтора обновления (мc). Промежуток времени, после которого Microsoft Access автоматически повторяет попытку сохранения измененной записи, если эта запись заблокирована другим пользователем, в промежутке от 0 до 1000 миллисекунд.

Предыдущий шаг Содержание

Ссылка на основную публикацию
Adblock
detector