如果我有一个将数据写入 Access 的工具,但其中一个表是链接表,那么数据究竟是如何写入该链接表的?数据是否会被 Access 关闭,然后在 Access 中,Access 处理数据的写入?还是向工具提供了某种链接,然后工具直接写入表?
询问的原因是,我遇到过我使用的某些自动化工具会或不会写入链接表的情况,我很好奇如何确保始终写入数据。
通常,所有数据都是通过 Access 数据库引擎写入的,除非您正在执行奇怪的操作。
在大多数情况下,它的工作方式如下:
- 工具通过 OLEDB/ODBC/DAO 向 Access 数据库引擎 (DAO360.DLL/ACEDAO.DLL( 提交查询
- Access 数据库引擎确定哪些数据应读取/写入位置(到文件/远程数据源(
- Access 数据库引擎使用链接表的 connect 属性尝试打开连接(如有必要(,并使用相应的 SQL 方言创建一个或多个查询
- Access 数据库引擎通过打开的连接提交查询
但是,这可能会出错:
- 该工具实际上根本不使用Access数据库引擎,而是尝试直接写入文件(通过UCanAccess/MDBTools/专有驱动程序(,而这些根本不支持链接连接 。
- 链接表中的连接字符串需要 ODBC 驱动程序、密码、资源或其他不存在或不在正确位置的内容
- 链接表需要某种隐式身份验证(例如 SharePoint(,但这不会发生
- 链接表使用的数据源需要工具未使用的特定锁类型(例如,用于在 SQL 服务器上打开动态集类型记录集的 dbSeeChanges
当然,还有很多很多事情可能会出错(事实上,我在编写此答案时尝试测试读取链接的 SharePoint 列表时崩溃了 Excel(。