You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用VBA将Access 2013表复制/迁移至SQL Server?语法报错求助

解决Access生成表查询导出到SQL Server的语法错误问题

我来帮你搞定这个问题!你遇到的报错是因为Access SQL里SELECT INTO导出到SQL Server的语法用错了,原语句里直接把OLEDB连接字符串放在INTO后面的括号里,这不符合Access的语法规范。下面给你两种正确的实现方式:

方法一:直接用IN子句指定SQL Server连接字符串

这是最直接的方式,不需要提前创建链接表,把连接字符串放在IN关键字后面的单引号中即可:

SELECT * 
INTO AAAANewTable 
IN 'Provider=SQLOLEDB;SERVER=stserver;DATABASE=stdatabase;UID=userid;PWD=userpass'
FROM AAAANewTable WITH OWNERACCESS OPTION;

这里的逻辑是:在指定的SQL Server数据库里创建名为AAAANewTable的新表,然后把Access本地表AAAANewTable的数据导入进去。

方法二:通过Access链接表操作(更适合重复使用)

如果你后续需要多次往SQL Server同步数据,建议先在Access里创建指向SQL Server的链接表:

  1. 在Access里通过「外部数据」选项卡,创建链接表,选择SQL Server作为数据源,填入你的服务器、数据库、账号密码信息,指定链接表名称(比如Linked_AAAANewTable)。
  2. 之后就可以用更简洁的SQL语句操作:
    • 如果SQL Server里还没有目标表,用SELECT INTO创建并导入:
      SELECT * 
      INTO Linked_AAAANewTable 
      FROM AAAANewTable WITH OWNERACCESS OPTION;
      
    • 如果SQL Server里已经存在目标表,用INSERT INTO追加数据(如果需要覆盖的话可以先加DELETE FROM Linked_AAAANewTable):
      INSERT INTO Linked_AAAANewTable
      SELECT * FROM AAAANewTable WITH OWNERACCESS OPTION;
      

额外注意事项

  • 确保你的SQL Server账号拥有创建表和插入数据的权限,否则会遇到权限报错;
  • 检查Access源表的字段名,如果包含SQL Server的保留字(比如User、Date、Order等),需要给字段名加上方括号[],比如[User];
  • 仔细核对连接字符串里的服务器名、数据库名、账号密码,拼写错误也会导致连接失败。

内容的提问来源于stack exchange,提问作者Mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:19:42