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

在SSMS中如何基于另一服务器的两张表在目标服务器创建合并表?

在SSMS中跨服务器合并表并创建新表的实现方案

嘿,这个跨服务器合并数据建表的需求其实挺常见的,我给你两种实用的实现方式,你可以根据自己的场景来选:


方法一:使用链接服务器(适合重复同步场景)

如果之后还需要定期从源服务器同步数据到Table3,配置链接服务器是更方便的选择:

1. 先在目标服务器上创建链接服务器

你可以用SSMS图形界面操作,或者直接跑T-SQL命令:

-- 创建链接服务器指向源服务器
EXEC sp_addlinkedserver 
    @server = N'Your_Source_Server_Name',  -- 替换成你的源服务器名称
    @srvproduct=N'SQL Server';

-- 如果源服务器需要单独的登录验证,添加登录映射
EXEC sp_addlinkedsrvlogin 
    @rmtsrvname = N'Your_Source_Server_Name',
    @useself = N'False',
    @locallogin = NULL,
    @rmtuser = N'Source_Server_Login',  -- 替换成源服务器的登录名
    @rmtpassword = N'Source_Server_Password';  -- 替换成源服务器的密码

2. 直接创建Table3并插入UNION后的数据

用SELECT INTO语句可以一步完成表创建和数据插入,注意要给Table2的列取别名,和Table1的列名对应:

-- 替换成你的源数据库名、架构名(一般是dbo)
SELECT col1, col2, col3
INTO Table3
FROM [Your_Source_Server_Name].[Source_DB_Name].[dbo].[Table1]
-- 如果不需要去重,用UNION ALL性能更好
UNION
SELECT col4 AS col1, col5 AS col2, col6 AS col3
FROM [Your_Source_Server_Name].[Source_DB_Name].[dbo].[Table2];

方法二:使用导入数据向导(适合一次性操作)

如果只是一次性把数据合并到Table3,用SSMS自带的导入向导更直观:

  • 打开SSMS,右键目标数据库 → 任务 → 导入数据,启动导入向导
  • 数据源选择SQL Server Native Client,填写源服务器的名称、登录信息,选择源数据库
  • 目标选择当前的目标服务器和数据库,点击下一步
  • 选择编写查询以指定要传输的数据,点击下一步
  • 在查询编辑器里输入合并语句:
    SELECT col1, col2, col3 FROM Table1
    UNION ALL  -- 按需选择UNION/UNION ALL
    SELECT col4 AS col1, col5 AS col2, col6 AS col3 FROM Table2
    
  • 点击下一步,设置目标表名为Table3,可以编辑列映射确保数据类型匹配,最后完成向导即可自动创建表并插入数据

关键注意事项

  • 确保目标服务器的登录账号有权限访问源服务器的数据库和对应表
  • 源表的对应列数据类型必须兼容(比如Table1的col1和Table2的col4要同为int/varchar等),否则UNION会报错
  • 如果需要后续同步数据,可以先创建Table3的结构,再用INSERT INTO Table3 (...) SELECT ... UNION ...定期执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:02:04