使用SSMS的Import Data导入带主键表时,如何开启/关闭IDENTITY_INSERT
解决SQL Server带主键(标识列)的数据批量导入问题
针对同一实例下生产库到测试库的带主键数据导入需求,推荐以下几种高效且可频繁复用的方法:
方法1:调整SSMS导入导出向导的标识列设置
这是最贴合你原有操作习惯的方案,无需手写大量SQL:
- 打开SSMS的导入数据向导,完成源(生产库)和目标(测试库)的连接配置
- 进入「选择源表和源视图」步骤,选中需要导入的表,点击编辑映射按钮
- 在弹出的映射窗口中,找到主键对应的标识列,勾选启用标识插入选项,同时确认目标列的数据类型、长度与源列完全匹配
- 完成后续向导步骤即可,向导会自动执行
SET IDENTITY_INSERT ON/OFF并处理数据插入,无需手动干预
方法2:批量生成带列列表的插入脚本
解决手动写列列表的麻烦,生成的脚本可长期复用:
- 右键生产库中需要导出的表 → 任务 → 生成脚本
- 在脚本生成向导中,选择目标表后,进入「设置脚本编写选项」步骤,点击高级按钮
- 在高级选项里,将「编写数据的脚本」设为仅限数据,「编写标识列的脚本」设为True,其余保持默认
- 生成的脚本会自动包含完整列列表的
INSERT INTO语句,以及前后的SET IDENTITY_INSERT [目标表] ON/OFF指令,直接在测试库执行即可
方法3:用复制数据库向导批量同步整库或多表
适合需要频繁同步多表或整库的场景:
- 右键生产库 → 任务 → 复制数据库,选择源服务器和目标服务器(同一实例直接选择当前服务器即可)
- 选择同步方式:推荐「使用SQL Server管理对象方法」(无需分离数据库,适合在线操作)
- 选择要复制的数据库,设置目标库名称(即你的测试库),向导会自动处理包括标识列在内的所有表结构和数据同步
注意事项
- 导入前务必确保测试库表结构与生产库完全一致(包括主键约束、标识列属性),可通过生成结构脚本的方式先同步结构
- 如果需要定期重复导入,可将生成的插入脚本保存,或通过SQL Server代理创建定时作业,实现自动化同步
内容的提问来源于stack exchange,提问作者Larry Stinson
相关产品推荐
相关产品推荐

