为什么即使在只读时,ADO连接仍会创建"ldb"锁定文件?

Chr*_*lle 5 excel ms-access vba locking ado

快速问题数据库专家.请参阅从Excel调用的以下代码(VBA/ADO):

Dim DBPath As String, ConnStr As String
DBPath = ThisWorkbook.Path & Application.PathSeparator & "Database.mdb"
ConnStr = "Data Source=" & DBPath & ";" & "Jet OLEDB:Database Password=" & DBPass()
Dim cnn as ADODB.Connection
Set cnn = New ADODB.Connection
With cnn
    .Provider = CheckProvider(strPath:=DBPath) ' Separate function call. Ignore
    .Mode = adModeRead
    .Open ConnStr
End With
Stop ' To inspect the directory...
Run Code Online (Sandbox Code Playgroud)

在给定"adModeRead"规范的情况下,它应该以只读方式打开数据库.但是我注意到,当连接处于活动状态时,仍在目录中创建/删除锁定文件(Database.ldb).当然这与只读命令相反,后者应该意味着不能写入任何数据,因此不需要文件锁定.

谁能解释一下这里发生了什么?谢谢.

编辑:和后续 - 如果我想打开连接纯粹只读而不创建任何锁定文件,还有其他方法吗?

Han*_*sUp 3

锁定文件记录与数据库文件的连接。该信息在多用户环境中很重要。即使您的连接是唯一的连接并且有意为只读,Access 仍会将该连接记录在锁定文件中。当另一个用户想要以独占模式连接到同一个数据库文件以进行设计更改时,这一点很重要——当您的连接仍处于活动状态时,他们将不会被允许独占访问。