防止访问在某些情况下阻止 ODBC 查询
Prevent Access from Blocking ODBC Query Under Certain Conditions
我正在使用 Access VBA 调用构建一些图表的 R 脚本。此 R 脚本通过 ODBC 查询从 Access 数据库中提取一些数据。我正在使用 library(RODBC)
从 R 建立连接。
如果我重新启动 Access,或 运行 Compact/Repair,查询将始终 运行。但是,如果我在数据库中进行其他更改,有时会收到以下警告:
Warning messages:
1: In odbcDriverConnect(sprintf("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=%s", :
[RODBC] ERROR: state HY000, code -3810, message [Microsoft][ODBC Microsoft Access Driver] The database has been placed in a state by an unknown user that prevents it from being opened or locked.'
并且脚本无法 运行,因为无法建立连接。
manage/set 数据库状态的最佳方法是什么,以便查询始终 运行?该问题与 table 是否打开没有直接关系 - 我可以打开 table,关闭 table,没有问题,甚至 [=35] =] 有时 table 打开。
编辑: 该错误是由于在 VBA 模块中进行任何类型的更改引起的(这与实际的 VBA 调用无关脚本,我可以 运行 在命令行中调用相同的 rscript
并复制错误)。既然我明白这是原因,我认为这不是什么大问题。保存 VBA 模块有时似乎可以更正错误,但不是 100% 的正确率。
这是设计使然。
对 VBA 模块、表单或报告进行任何设计更改都会在 accdb 文件上设置独占锁,该锁一直保持到进行更改的 Access 应用程序关闭。
只需在对表单、报表或 VBA 模块进行任何设计更改后关闭并重新打开文件。
这是人们建议您拆分数据库的原因之一,因为这样您就可以更改设计而无需将人员锁定在数据之外。
我正在使用 Access VBA 调用构建一些图表的 R 脚本。此 R 脚本通过 ODBC 查询从 Access 数据库中提取一些数据。我正在使用 library(RODBC)
从 R 建立连接。
如果我重新启动 Access,或 运行 Compact/Repair,查询将始终 运行。但是,如果我在数据库中进行其他更改,有时会收到以下警告:
Warning messages: 1: In odbcDriverConnect(sprintf("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=%s", : [RODBC] ERROR: state HY000, code -3810, message [Microsoft][ODBC Microsoft Access Driver] The database has been placed in a state by an unknown user that prevents it from being opened or locked.'
并且脚本无法 运行,因为无法建立连接。
manage/set 数据库状态的最佳方法是什么,以便查询始终 运行?该问题与 table 是否打开没有直接关系 - 我可以打开 table,关闭 table,没有问题,甚至 [=35] =] 有时 table 打开。
编辑: 该错误是由于在 VBA 模块中进行任何类型的更改引起的(这与实际的 VBA 调用无关脚本,我可以 运行 在命令行中调用相同的 rscript
并复制错误)。既然我明白这是原因,我认为这不是什么大问题。保存 VBA 模块有时似乎可以更正错误,但不是 100% 的正确率。
这是设计使然。
对 VBA 模块、表单或报告进行任何设计更改都会在 accdb 文件上设置独占锁,该锁一直保持到进行更改的 Access 应用程序关闭。
只需在对表单、报表或 VBA 模块进行任何设计更改后关闭并重新打开文件。
这是人们建议您拆分数据库的原因之一,因为这样您就可以更改设计而无需将人员锁定在数据之外。