在某些情况下阻止访问阻止ODBC查询

时间:2018-10-08 17:26:27

标签: r ms-access rodbc

我正在使用Access VBA调用构建某些图表的R脚本。此R脚本通过ODBC查询从Access数据库中提取一些数据。我正在使用library(RODBC)从R建立连接。

如果我重新启动Access或运行压缩/修复,该查询将始终运行。但是,如果我在数据库中进行其他更改,有时会收到以下警告:

  

警告消息:   1:在odbcDriverConnect(sprintf(“ Driver = {Microsoft Access Driver(* .mdb,* .accdb)}; DBQ =%s”,中:     [RODBC]错误:状态HY000,代码-3810,消息[Microsoft] [ODBC Microsoft Access驱动程序]该数据库已由未知用户置于状态,阻止其打开或锁定。'

由于无法建立连接,脚本无法运行。

管理/设置数据库状态以使查询始终运行的最佳方法是什么?问题并不与表是否打开直接相关-我可以打开表,然后关闭表,没有问题,甚至有时在表打开的情况下运行。

编辑:该错误是由VBA模块中的任何更改引起的(这与脚本的实际VBA调用无关,我可以运行相同的rscript调用在命令行中复制错误)。既然我知道这就是原因,那么我认为这不是大问题。保存VBA模块有时似乎可以纠正错误,尽管不是100%的时间。

1 个答案:

答案 0 :(得分:2)

这是设计使然。

对VBA模块,表单或报表进行任何设计更改都会在accdb文件上设置排他锁,该锁将一直保留到进行更改的Access应用程序关闭为止。

对表单,报表或VBA模块进行任何设计更改后,只需关闭并重新打开文件即可。

这是人们建议您拆分数据库的原因之一,因为这样您就可以更改设计而无需将人们锁定在数据之外。