用户能否通过编辑Access中Pass Through查询结果修改SQL数据库?
关于Pass Through查询是否会被误编辑修改SQL Server表的解答
核心结论:对于用于数据查询(
SELECT语句)的Pass Through查询,用户在Access中编辑其返回的结果集时,不会意外修改对应的SQL Server表。原因说明:
Pass Through查询的工作机制是将SQL语句直接发送到SQL Server执行,返回给Access的是一个“静态”记录集——Access无法解析该查询的执行逻辑(比如多表关联、复杂聚合等),也就无法生成对应的更新语句同步修改底层SQL Server表。因此这类查询的结果默认是完全只读的。特殊情况提醒:
如果Pass Through查询执行的是INSERT/UPDATE/DELETE这类写操作,执行时会直接修改SQL Server数据,但这是主动执行写语句的结果,并非编辑查询结果导致的误操作——而你的场景是用于数据质量检查,只会用到SELECT类查询,所以无需担心这种情况。对比链接表查询:
基于链接表的查询默认是可更新的(只要满足Access的可更新条件,比如表有主键、查询未包含不可更新的聚合/计算字段等),用户确实可能通过编辑查询结果误改SQL Server主表。而Pass Through查询刚好能从机制上杜绝这种误操作。建议:
既然你的用户只需要只读访问数据,将现有基于链接表的查询全部改为Pass Through查询是合理的选择——除了防止误编辑,还能让复杂查询直接在SQL Server端执行,利用数据库的优化能力提升性能,同时减少Access本地的数据处理压力。
内容的提问来源于stack exchange,提问作者Alexander Newman
相关产品推荐
相关产品推荐

