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

无法向已链接MySQL服务器插入数据,咨询跨库数据同步方法

从SQL Server向MySQL插入/复制数据的解决方案

先解决插入报错问题

你触发的Msg 117错误是因为链接服务器的引用格式不符合规范,SQL Server仅允许最多3个前缀(即四部分命名:[服务器].[数据库].[架构].[表]),以下是两种正确的插入单条数据的方法:

方法1:修正四部分命名的INSERT语句

使用标准的链接服务器引用格式,替换原来的...为.,MySQL的架构默认用dbo即可:

INSERT INTO [MYSQL].[cclog_db].[dbo].[companies] (id, company_code, name)
VALUES (5, 5 , 'Random Company');

方法2:使用OPENQUERY/EXECUTE AT语法(兼容性更强)

如果四部分命名仍有问题,可直接把SQL语句发送到MySQL服务器执行:

-- 用OPENQUERY插入
INSERT OPENQUERY([MYSQL], 'SELECT id, company_code, name FROM cclog_db.companies')
VALUES (5, 5, 'Random Company');

-- 或者用EXECUTE AT直接执行MySQL语法
EXECUTE ('INSERT INTO cclog_db.companies (id, company_code, name) VALUES (5, 5, ''Random Company'')') AT [MYSQL];

将SQL Server同表数据复制到MySQL的方法

根据数据量和需求,有以下几种常用方案:

方案1:INSERT...SELECT直接同步

如果本地SQL Server和远程MySQL的表结构匹配,直接用SELECT拉取本地数据插入远程表:

INSERT INTO [MYSQL].[cclog_db].[dbo].[companies] (id, company_code, name)
SELECT id, company_code, name FROM [你的本地SQL Server数据库].[dbo].[companies];

注意:需确保两边字段类型、长度一致,若存在重复主键,需先清理目标表重复数据或调整插入逻辑。

方案2:结合OPENQUERY同步

通过OPENQUERY传递查询逻辑,适合复杂数据筛选场景:

INSERT OPENQUERY([MYSQL], 'SELECT id, company_code, name FROM cclog_db.companies')
SELECT id, company_code, name FROM [你的本地SQL Server数据库].[dbo].[companies];

方案3:用SSIS高效同步(适合大量数据/定期同步)

如果需要处理大量数据或定期同步任务,SQL Server Integration Services(SSIS)是更高效的选择:

  • 打开SQL Server Data Tools(SSDT),新建Integration Services项目
  • 添加「OLE DB源」组件,配置连接到你的SQL Server数据库并选择源表
  • 添加「MySQL目标」组件,配置连接到MySQL数据库并选择目标表
  • 完成源与目标的字段映射,运行包即可完成数据复制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 09:05:21