MS Access后端数据库损坏

问题描述 投票:0回答:1

我已经编写了一个MS-Access应用程序并拆分了数据库。为了提高网络上的多个并发用户正在使用它时的性能(如this所建议的),前端使用以下例程创建与后端的持久连接:

Public theOpenDb As dao.Database

Public Sub OpenTheDatabase(pfInit As Boolean, Optional databasePath As Variant)
  ' Open a handle to a database and keep it open during the entire time the application runs.
  ' Params  : pfInit   TRUE to initialize (call when application starts)
  '                    FALSE to close (call when application ends)
  ' Source  : Total Visual SourceBook

  Dim strMsg As String

  If pfInit Then
    On Error Resume Next
    Set theOpenDb = OpenDatabase(databasePath)
    If Err.number > 0 Then
      strMsg = "Trouble opening database: " & databasePath & vbCrLf & _
           "Make sure the drive is available." & vbCrLf & _
           "Error: " & Err.Description & " (" & Err.number & ")"
    End If

    On Error GoTo 0
    If strMsg <> "" Then
      MsgBox strMsg
    End If
  Else
    On Error Resume Next
    theOpenDb.Close
    Set theOpenDb = Nothing
  End If
End Sub

我的一些用户报告说,他们的后端数据库中反复收到“无法识别的数据库格式”错误。这些数据库都可以通过压缩和修复来恢复,但是这个问题仍然使他们非常沮丧。

我读了here

不要使连接保持打开状态:始终记得在完成工作后关闭Microsoft Access数据库连接。如果网络连接丢失,Open Access数据库连接总是有损坏的可能。

在前端和后端之间保持持久连接是否会增加数据库损坏的风险?

ms-access connection persistence data-corruption
1个回答
0
投票

像往常一样,没有上下文的信息太少了?

持久连接永远不会导致损坏。

总是记得在完成工作后关闭Microsoft Access数据库连接。

对,但是您的持久连接永远不会做任何工作!!!

因此,如果您编写一些代码来打开表,请执行一些工作,然后关闭该记录集和连接。这与使连接保持打开状态的代码有关。该连接永远不会做任何工作,也永远不会更新任何数据-因此该建议在这里不适用。

因此,是的,您最肯定要清除更新代码,并且说打开表的例程可以工作,然后应按建议关闭程序。但是对于只是坐在那里的连接却什么也没做却没有任何作用?它不会导致损坏,如果有的话,它将减少损坏。

与往常一样,没有上下文的一点信息会变得更糟,因为根本没有这些信息。所以,我从你那儿借了绳子?好吧,我没有提到你的牛被绑在那根绳子上了!!!因此,这里的上下文很重要。

因此,所读内容应该真正说出:

请勿打开正在做有用工作的连接。做您的更新或其他操作,然后在完成后整理并关闭。但是,建议使用零代码来处理一些打开持久连接并执行零工作的代码,因此在完成工作后要整理和关闭的代码为零。因此,持久连接不做任何工作,也不做任何更新,因此没有任何清理空间,并且具有零功能,可以保持待处理的磁盘写入(表写入)处于打开状态,并且在Access崩溃时不会结束。

© www.soinside.com 2019 - 2024. All rights reserved.