SharePoint库中存储的Access DB的并发和连接问题

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

简短版本:(找出答案后)

我有一个Excel VBA应用程序,在SharePoint库上具有MS Access数据库(.accdb)。经过检查的行为(并且显然已记录在案-请参见答案):

  1. [执行ADODB打开和关闭方法需要很长时间(〜15秒)。
  2. 如果多个用户同时连接到数据库,则仅保存关闭数据库连接LAST的用户所做的更改。更改光标类型,光标位置或锁定类型无济于事。没有显示错误。

为什么会这样?

原始问题:

这里的第一个问题。希望这不是太罗word:

我已经使用VBA构建了一个Excel应用程序,用于与MS Access数据库(.accdb)通信,该数据库应该支持并发用户访问它。它应作为可访问文件(不以任何其他方式集成到该文件中)放置在Sharepoint网站上。当我在家庭网络上测试Excel文件和数据库时,它就像一个超级按钮,事务和所有功能一样工作。但是,一旦将其迁移到Sharepoint,我发现它与它在我的个人网络上的行为方式存在一些极端差异:

  1. ADODB {.open}和{.close}方法每个至少花费15秒(使Excel冻结直到完成)。因此,我决定在应用程序的整个生命周期中仅打开和关闭一次连接,并在连接断开时恢复连接。我知道以下事实:我们强烈建议您不要这样做,但是我的用户不能等那么久。除了我将要解释的问题之外,这没有引起我知道的任何问题。

  2. 问题:除非关闭数据库的所有活动用户连接,否则即使更改是唯一的活动,也不会将更改保存到实际数据库中。我想直到所有连接都终止之后,每个用户在尝试更新时一切都会顺利进行,并且每个用户都可以访问他/她的更改。我尝试了所有可能的游标类型和锁定类型,但似乎没有任何效果。就像数据库的本地副本存储在用户的计算机上一样(因此,打开和关闭连接时要等待很长时间),而更新存储在临时版本上,而不是实际版本上。

我尝试了游标类型,游标位置,锁定类型以及所有其他不可行的组合(在我的案例中,不支持动态游标-我想知道这是否是答案)。

由于这个原因,我别无选择,只能使该程序一次只能供一个用户访问,否则在此过程中似乎丢失了更改,因此该程序非常不可靠。

我读过一些有关必须“刷新缓冲区”或“刷新光标”的内容。这是否可能/必要?还是这样?如果我使用键集游标,我的编辑记录不应该显示给所有其他用户吗? (不是在谈论新的)

关于它的价值,我在访问它之前将路径映射到共享点文件夹。

你们有没有经历过类似的事情?或有什么建议?

如果您需要我的代码示例,我会尽快发布。非常感谢!

excel vba ms-access sharepoint ado
1个回答
0
投票

我找到了解决问题的方法:

尽管您可以将Access数据库文件保存到OneDrive或SharePoint文档库,但我们建议您避免从这些位置打开Access数据库。可以将文件下载到本地进行编辑,然后将更改保存到SharePoint后再次上传。如果有多个人从SharePoint打开Access数据库,则可能会创建数据库的多个副本,并且可能会发生某些意外行为。此建议适用于所有类型的Access文件,包括单个数据库,拆分数据库以及.accdb,.accdc,.accde和.accdr文件格式。有关部署Access的更多信息,请参阅部署Access应用程序。

来源:Ways to share an Access desktop database

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