excel - 为什么 ADO 连接即使在只读状态下仍会创建 "ldb"锁定文件?

标签 excel vba ms-access 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...

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

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

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

最佳答案

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

关于excel - 为什么 ADO 连接即使在只读状态下仍会创建 "ldb"锁定文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34184833/

相关文章:

excel - Powershell 从 Excel 列导入的日期和时间格式错误

mysql - 通过 VBA 函数在查询中添加新的计算字段

c# - 从 Access 2003 调用托管代码

excel - VBA从数据验证列表创建文件夹并允许用户选择文件夹

sql - 在 MS Access 中更新记录无法使用 SQL 语法

sql-server - 检查 SQL Server 服务器可用性的最快方法是什么?

vba - IsEmpty + Delete 功能让我感到困惑......因为设置了一个值

vba - 交叉引用文档的 VLookup

php - 如何更新 Excel 数据? (刷新所有查询)

excel - 同时访问vba中的目标值