Блокировка фиксации изменений в базе данных Microsoft Access - PullRequest
0 голосов
/ 16 июня 2010

Есть ли способ написать ловушку, которая будет выполняться до того, как изменения будут зафиксированы в базе данных Access? Я ищу способ заблокировать изменения, если конкретный процесс в настоящее время запрашивает БД.

1 Ответ

1 голос
/ 16 июня 2010

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

Что такое специфический процесс ?У вас есть метод, чтобы определить, когда / если он читает данные из вашей базы данных?

Если определенный процесс является внешним по отношению к базе данных, как код ASP веб-сервера, который использует ADO для извлечения данных, вы можете увидеть, могут ли помочь свойства режима соединения ADO и свойства IsolationLevel.

Обновление : я использовал форму, чтобы поэкспериментировать со свойством adModeShareDenyWrite Mode для соединения ADO.Пока форма открыта, другие пользователи могут открывать базу данных, но не вносить никаких изменений.Однако, если другой пользователь уже открыл базу данных, когда форма пытается открыть соединение, это вызывает ошибку.

Возможно, ваш сценарий развертывания может попытаться открыть соединение adModeShareDenyWrite и выручить при ошибке.

Option Compare Database
Option Explicit
Dim cn As ADODB.Connection

Private Sub Form_Close()
    If Not (cn Is Nothing) Then
        cn.Close
        Set cn = Nothing
    End If
End Sub

Private Sub Form_Load()
    Set cn = New ADODB.Connection
    cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=\\Cmpq\export\Access\backend\links2003.mdb;" & _
        "User Id=admin;Password=;"
    cn.Mode = adModeShareDenyWrite
    cn.Open
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...