You need to enable JavaScript to run this app. 如何在SQL Server中跨不同数据库将数据从一张表复制到另一张空表
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL Server中跨不同数据库将数据从一张表复制到另一张空表

SQL Server跨数据库同结构表数据复制方案

适用前提

两张表结构完全一致,所在数据库属于同一个SQL Server实例,你使用的数据库账号对源表有查询权限、对目标表有写入权限。

操作步骤

场景1:目标表无自增(IDENTITY)主键

直接使用INSERT INTO ... SELECT语法即可,注意:纯数字开头的表名需要用方括号[]包裹,避免SQL语法解析错误:

-- 切换到目标表所在的数据库
USE [你的2018表所在的数据库名]
GO

INSERT INTO dbo.[2018]
SELECT * FROM [你的2012表所在的数据库名].dbo.[2012]
GO

场景2:目标表有自增(IDENTITY)主键

需要先开启IDENTITY_INSERT权限,允许手动写入自增列的值,插入完成后关闭权限即可,注意必须显式列出所有列名,不能直接用*:

-- 切换到目标表所在的数据库
USE [你的2018表所在的数据库名]
GO

-- 开启自增列写入权限
SET IDENTITY_INSERT dbo.[2018] ON
GO

INSERT INTO dbo.[2018] (列1, 列2, 列3, ...) -- 替换为实际的所有列名,顺序和源表一致
SELECT 列1, 列2, 列3, ... FROM [你的2012表所在的数据库名].dbo.[2012]
GO

-- 关闭自增列写入权限
SET IDENTITY_INSERT dbo.[2018] OFF
GO

注意事项

  • 正式执行全量插入前,建议先测试少量数据验证格式符合预期,避免产生脏数据:
-- 仅插入前10条测试
INSERT TOP(10) INTO dbo.[2018]
SELECT * FROM [你的2012表所在的数据库名].dbo.[2012]
  • 若表存在外键、唯一约束、触发器等,建议先临时禁用,插入完成后再重新启用,避免插入中途报错
  • 数据量超过10万条的场景建议分批插入,避免事务日志占用过多磁盘空间
  • 若两张表所在的数据库属于不同的SQL Server实例,需要先配置「链接服务器」打通实例访问,再按照[链接服务器名].库名.架构名.表名的格式引用源表即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 02:15:04