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

如何批量启用多表Identity Insert?SQL Server 2014导入导出向导需求

如何让SQL Server导入导出向导默认勾选Enable Identity Insert

我之前也碰到过这个头疼的问题,手动几百次点编辑映射简直要疯!下面几个方法可以帮你解决默认勾选Enable Identity Insert的需求:

方案1:批量编辑所有表的映射(最快的临时解决方法)

当你在导入导出向导走到「选择源表和视图」这一步时,别着急逐个处理:

  • 按下Ctrl+A全选所有504张表
  • 点击界面顶部的**「编辑映射...」按钮**(注意是选中所有表后点这个全局按钮,不是单个表的右键选项)
  • 在弹出的「列映射」窗口里,勾选「Enable identity insert」选项,然后点击确定
    这样所有选中的表都会一次性启用身份插入,不用再逐个重复操作!这个小技巧很多人容易忽略,能直接帮你省去几百次点击。

方案2:保存为SSIS包并批量修改属性(适合重复同步场景)

如果之后还要频繁做这类数据同步,建议把向导流程保存成SSIS包,再批量修改默认配置:

  1. 在导入导出向导的最后一步,选择「保存SSIS包」,可以保存到本地文件或者SQL Server实例中
  2. 打开SQL Server Data Tools(SSDT),加载这个保存好的SSIS包
  3. 在数据流面板里,全选所有「OLE DB目标」组件(按住Ctrl多选或者用Ctrl+A全选)
  4. 在右侧的属性面板里,找到IdentityInsert属性,将其值改为True
  5. 保存包后,以后每次运行这个包都会自动启用身份插入,再也不用手动勾选了

方案3:用T-SQL脚本批量控制身份插入(适合自动化/命令行场景)

如果偏好纯脚本操作,也可以在数据导入前后批量执行身份插入的开关语句:

步骤1:生成启用Identity Insert的脚本

在目标数据库执行以下SQL,会生成所有表的启用语句:

SELECT 'SET IDENTITY_INSERT [' + TABLE_SCHEMA + '].[' + TABLE_NAME + '] ON;' 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_TYPE = 'BASE TABLE'

步骤2:执行数据导入

可以继续用导入导出向导完成数据复制,或者用bcp、OPENROWSET等工具批量导入

步骤3:生成关闭Identity Insert的脚本

导入完成后,执行以下SQL生成关闭语句:

SELECT 'SET IDENTITY_INSERT [' + TABLE_SCHEMA + '].[' + TABLE_NAME + '] OFF;' 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_TYPE = 'BASE TABLE'

这个方法很适合配合SQL Agent作业做定时自动同步,完全不用手动干预。

注意:无论用哪种方法,都要确保源表和目标表的身份列数据完全匹配,避免导入后出现主键冲突或者身份值混乱的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:19:19