Публикации
Последние новости:
 
Высокие технологии
Technology
Компьютерное железо
Программное обеспечение
Компьютерная безопасность
Операционные системы
Компьютерный справочник
БД
Интернет сегодня
AudioТехника
Средства связи
Весь спектр цифровой техники
Мир авто
Бизнес-финансы
Всё о культуре
ПроСпорт
Всё о компьютерах
Детское чтение
Мировые телекоммуникации
Пресс-релизы
 
Статьи
Мир культуры
Интересно о спорте
Покупаем:
ТурТранс
Для прекрасных дам
Усадьба, дом
 

Платный хостинг от провайдера HostSpace.com.ua - хостинг, регистрация доменов. Поддержка PHP, MySQL, почта - в каждом тарифном плане.





Схемы блокировок в Базах Данных

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








Процессор Баз Данных обеспечивает три уровня блокировок:

  • Блокировка Базы Данных. На этом уровне блокировки к Базе Данных может обращаться только один пользователь. Такой уровень блокировки применяется для глобального изменения или обновления данных или при техническом обслуживании Базы Данных- сжатии;
  • Блокировка Таблицы. На этом уровне блокировки к таблице может обращаться только один пользователь. Такой уровень блокировки применяется в тех случаях, когда необходимо обработать сразу несколько записей таблицы.
  • Блокировка страницы. На этом уровне к заблокированной странице может обращаться только один пользователь. Это самый нижний уровень блокировки.
  • Блокировка Базы Данных 

    Блокиривка на уровне Базы Данных осуществляется присвоением свойству Exclusive, при открытии БД, значения True. При использовании вами элемента управления Data, в его свойствах установите Exclusive = True . Если же вы используете объект DAO, то при  присвоении значения объекту db установите в True значение второго параметра метода OpenDatabase:

    Set db = DBEngine.OpenDatabase(“C:\Biblio.mdb”, True)

    Когда База Данных заблокирована таким образом, тодругие пользователи не смогут  ее открыть. При попытке обращения к заблокированной Базе Данных вы получите сообщение: 

    “Couldnt use C:\Biblio.mdb; file already in use.”

    “Невозможно использовать C:\Biblio.mdb; файл уже используется”

    Одновременно с этим генерируется перехватываемая ошибка – 3045,  используя которую вы можете завершить программу, которая обращается к заблокированной Базе Данных, т.к. после возникновения ошибки программа продолжает выполняться, хотя База Данных так и не была открыта.

    При использовании элемента управления Data в обработчик события Error вставляется следующий код:

    Private Sub Data1_Error(DataErr As Integer, Response As Integer) 

    If Err = 3045 Then 

    MsgBox "Доступ к Базе Данных закрыт. Повторите запрос через несколько минут." &  _    ,vbCritical, "Data_Error"

    End

    End If

    End Sub

     

    При использовании объекта DAO в той процедуре, где будет стоять код открытия Базы Данных, вставляется обработчик ошибок:

    On Error Goto ErrHandler

    Здесь вставляется код открытия БД и если возникает ошибка – 3045, то она 
    перехватывается и обрабатывается 

    ErrHandler: 

    If Err = 3045 Then 

    MsgBox "Доступ к Базе Данных закрыт. Повторите запрос черезнесколько минут." &  _    ,vbCritical, "Data_Error" 

    End

    End If

    Блокировка Таблицы

    Блокировка на уровне таблицы применяется при глобальных изменениях в отдельно взятой таблице. После того как вы проведете ваши изменения и закроете эту таблицу, толкко тогда к ней получат доступ другие пользователи. . При использовании вами элемента управления Data, в его свойствах установите Exclusive = False, для того, чтобы пользователи имели доступ к Базе Данных, а свойствu Option присвойте значение 3. Это приведет к томы, что выбранная вами таблица (к примеру Authors) будет открыта с параметрами DenyWrite(1) и DenyRead(2), что запрещает другим пользователям открывать эту таблицу во время действия вашей программы. При попытке обращения к заблокированной таблице вы получите сообщение: 

    “Couldnt  lock table Authors;currently in use by user admin on machine USER-0000011660 “

    “Невозможно зблокировать таблицу Authors , т.к. она используется администратором машины USER-0000011660

    Одновременно с этим генерируется перехватываемая ошибка – 3265,  используя которую вы можете завершить программу, которая обращается к заблокированной таблице, т.к. после возникновения ошибки программа продолжает выполняться, хотя таблица так и не была открыта. При использовании элемента управления Data в обработчик события Error вставляется следующий код, но предварительно дополняя предыдущий:

    Private Sub Data1_Error(DataErr As Integer, Response As Integer)

    Select Case Err

                Case 3045

    MsgBox "Доступ к Базе Данных закрыт. Повторите запрос черезнесколько минут." &  _    ,vbCritical, "Data_Error"

    End

                Case 3265

    MsgBox "Доступ к таблице закрыт. Повторите запрос через несколько минут." &  _    ,vbCritical, "Data_Error"

    End

    End Select

    End Sub

    Если же вы используете объект DAO, то при  присвоении значения объекту db установите в False значение второго параметра метода OpenDatabase: 

    Set db = DBEngine.OpenDatabase(“C:\Biblio.mdb”, False)

    а, при присвоении значении объекту Recordset:

    Set rs = db.OpenRecordset(“Authors”, dbOpenTable, dbDenyRead + dbDenyWrite)

    Для перехвата возникающей ошибки опять ставте код:

    On Error Goto ErrHandler

    Здесь вставляется код открытия таблицы и если возникает ошибка – 3265, то она 
    перехватывается и обрабатывается

    ErrHandler:

    If Err = 3265 Then

    MsgBox "Доступ к таблице закрыт. Повторите запрос черезнесколько минут." &  _  
     ,vbCritical, "Data_Error"

    End

    End If

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

    Внимание! Если вы откроете приложении Access в то время, когда у вас стоит блокировка таблицы (во время работы вашей программы), то данная таблица открывается без извещения вас диалоговым окном о том, что таблица заблокирована. Но, при всем желании вы не сможете сделать запись или произвести редактирование какой либо записи.

    Блокировка страницы 

    Самым нижнем уровнем блокировки является уровень таблицы. Процессор Microsoft Jet автоматически устанавливает блокировку страницы и не может контролироваться вашей программой. Страница данных может содержатьнесколько записей, размер его равен 26 кб. Блокировка страницы означает блокировкувсех записей, находящейся на этой странице. Если длина записи – 512 байтов, то будет заблокированно 4 записи, а если 50 байтов то 40 записей. Точное число записей нельзя заранее ни определить ни задать, т.к. таблица может содержать удаленные записи (которые удаляются только во время уплотнения). Но, не смотря на это объект Recordset имеет свойство LockEdits, которое позволяетуправлять страничной блокировкой из программы.

    Блокировка на уровне таблицы имеетдва режима – пессимистический (LockEdits ю True) и оптимистический (LockEdits = False). По умолчанию устанавливается пессимистическая блокировка. 

    Пессимистическая блокировка блокирует страницу при вызове методов Edit и AddNew,  и остается заблокированной до тех пор пока не будетвыполнен метод Update или CancelUpdate. В течении всего времени ни одна программа не имеет доступа к забликированной странице.

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

    Оптимистическая блокировка блокирует страницу только при вызове метода Update. Это означает, что пользователь вызывает методы Edit  и AddNew, производит действия с дсанными, и только в момент сохранения обновления процессор Microsoft Jet пытается заблокировать страницу. Если все проходит успешно, то запись попадает в таблицу, но если обнаружится, что эта запись уже была отредактированна, то обновление отменяется и пользователь получаетсообщение о том, что данные были уже кем-то изменены.

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

    Програмно это осуществляется следующим образом: 

  • для элемента Data - Data1.Recordset.LockEdits = True (или False);
  • для объекта DAO – rs.LockEdits = True (или False);
  • При работе с пессиместической и оптимистической блокировкой используется вызов Idle. Этот метод приостанавливает выполнение программы на Visual Basic на время обнавления динамических и статических наборов, которые были открыты этой программой. Вызов этого метода гарантирует, что в вашу программу попадут самые последние изменения в наборе данных.

    Програмно это осуществляется следующим образом:

                            Rs.Update

                            DBEngine.Idle dbFreeLock            сделать паузу

      

    Вот и все.



    www.sdteam.com

    БД 08-09-2006

    Microsoft создает крупное дополнение для SQL Server 2008 07-10-2008 БД
    Корпорация Microsoft начала работу над новым и самым крупным из всех существующих аддонов для СУБД SQL Server 2008, пока разработка фигурирует под кодовым названием Kilimanjaro. В Microsoft говорят, что Kilimanjaro призвана существенно повысить масштабируемость SQL Server 2008 и позволит ему работать с чрезвычайно крупными хранилищами данных.В основе аддона лежат разработки и технологии компании DATAllegro, купленной Microsoft около двух месяцев ...


    SAP покупает компанию Visiprise 07-07-2008 БД
    Европейский производитель корпоративного программного обеспечения SAP планирует купить компанию Visiprise, занимающуюся созданием софта для корпоративного и производственного планирования. Сделка, финансовые условия которой не разглашаются, будет закрыта в июле этого года.После завершения покупки, все разработки Visiprise будут интегрированы в программное обеспечение SAP для автоматизации бизнес-процессов и комплексной интеграции производственных...


    SAP занялась продажей индивидуальных лицензий 08-10-2007 БД
    SAP представила новый тип лицензии на программное обеспечение NetWeaver, используемое для автоматизации деятельности компаний. Новая лицензия представляет собой годовую подписку и ориентирована она на индивидуальных разработчиков.В компании говорят, что ранее SAP занималась лишь продажей лицензий компаниям, теперь индивидуальные пользователи смогут купить годовую лицензию. Для этого им необходимо будет присоединиться к сети SAP developer network ...


    Oracle купила компанию Netsure Telecom 05-09-2007 БД
    Oracle сегодня сообщила о покупке компании Netsure Telecom Limited, производителя средств для обеспечения безопасности сетей, исследования данных в сетях и общего анализа корпоративных сетей.Основная задача программного обеспечения Netsure Teleocm - это комплексная диагностика критически важных крупных сетей. Среди клиентов купленной компании есть и крупнейшие операторы связи - Vodafone, Cable&Wireless, Eircom и ряд других.Компания Netsure являет...

    Москву посетил Президент Oracle Чарльз Филлипс 19-08-2007 БД
    Сегодня в рамках московской пресс-конференции Президента Oracle Чарльза Филлипса было объявлено об итогах 30-летнего развития корпорации и ее продуктов, а также представлена глобальная стратегия Oracle.В программе четырехдневного визита руководителя Oracle в Москву и Санкт-Петербург - встречи с ключевыми клиентами и партнерами, эффективно использующими технологии и бизнес-приложения Oracle в России.По итогам 2007 финансового года, годовой доход O...

    Вооруженные силы Грузии внедрили систему управления ресурсами SAP 13-07-2007 БД
    Специалисты украинского НИИ автоматизированных компьютерных систем «Экотех» (НИИ АКС «Экотех») совместно со специалистами главного исполнителя проекта – грузинской компании «UGT», при участии «SAP Украина», завершили этап создания Концептуального проекта по внедрению интегрированной системы управления ресурсами предприятия SAP ERP в Вооруженных Силах (ВС) Грузии.По словам министра обороны  Грузии Давида Кезерашвили, прое...
     
    При любом использовании материалов сайта ссылка на сайт www.archive.com.ua обязательна.
    Rambler's Top100 Рейтинг@Mail.ru