在 Access 中将数据写入链接 table 时,实际写入的是什么?

When writing data to a linked table in Access, what actually does the writing?

如果我有一个将数据写入 Access 的工具,但其中一个 table 是 linked table,那么数据写入 [=15] 的具体方式=]编辑 table?数据是否直接交给 Access,然后在 Access 中,Access 处理数据的写入?或者是一种link提供给工具然后工具直接写入table?

问的原因是我遇到过一些我使用的自动化工具会或不会写入 linked table 的情况,我很好奇如何以确保始终写入数据。

通常,所有数据都是通过 Access 数据库引擎写入的,除非您正在做一些奇怪的事情。

在大多数情况下,它是这样工作的:

  • 工具通过 OLEDB/ODBC/DAO 向 Access 数据库引擎 (DAO360.DLL/ACEDAO.DLL) 提交查询
  • Access 数据库引擎确定哪些数据应该 read/written 到哪里(到 file/remote 数据源)
  • Access 数据库引擎使用链接 table 的连接 属性 尝试在必要时打开连接,并在适当的 SQL 方言中创建一个或多个新查询
  • Access 数据库引擎通过打开的连接query/queries提交

但是,这可能会出错:

  1. 该工具实际上根本不使用 Access 数据库引擎,而是尝试直接写入文件(通过 UCanAccess/MDBTools/proprietary 驱动程序),而那些根本不支持链接连接
  2. 链接中的连接字符串 table 需要 ODBC 驱动程序、密码、资源或其他不存在或不在正确位置的内容
  3. 链接的 table 需要某种隐式身份验证(例如 SharePoint),而这不会发生
  4. 链接 table 使用的数据源需要特定的锁类型(例如 dbSeeChanges 用于在 SQL 服务器上打开 Dynaset 类型的记录集),该工具未使用该锁类型

当然,还有很多很多事情可能会出错(事实上,我崩溃了 Excel 试图在编写此答案时测试读取链接的 SharePoint 列表)。