Visual Studio 2022中Native OLE DB缺失Keep Identity选项的解决求助
问题描述
- 更换硬盘后仅安装Visual Studio 2022,此前环境同时装有VS2019和2022
- 此前创建SSIS包使用SQL Server Native Client 11.0,该提供程序的连接管理器包含「Keep Identity」选项(等效于执行
SET IDENTITY_INSERT ON) - VS2022中仅能选择「Microsoft OLE DB Provider for SQL Server」,该提供程序无「Keep Identity」相关选项
- 尝试在数据流任务前通过Execute SQL语句启用
IDENTITY_INSERT,但未生效
可行解决办法
1. 安装SQL Server Native Client 11.0
从微软官网搜索「SQL Server 2012 Native Client」下载对应系统位数的安装包,安装后重启VS2022,即可在连接管理器的OLE DB提供程序列表中找到「SQL Server Native Client 11.0」,继续使用原有的「Keep Identity」选项配置。
2. 修正Execute SQL任务的执行逻辑
Execute SQL语句未生效多因连接会话不一致,数据流任务与Execute SQL任务未复用同一会话。解决步骤:
- 确保Execute SQL任务和数据流任务使用同一个连接管理器
- 在Execute SQL任务中执行:
SET IDENTITY_INSERT [目标表名] ON; - 在Execute SQL任务的属性窗口中,将「RetainSameConnection」设置为
True,确保后续数据流任务复用该会话 - 数据流任务执行完成后,添加Execute SQL任务执行:
SET IDENTITY_INSERT [目标表名] OFF;
3. 配置OLE DB Destination的高级属性
针对「Microsoft OLE DB Provider for SQL Server」,可通过组件高级属性实现身份插入:
- 打开OLE DB Destination编辑器,切换到「Advanced Editor」
- 在「Component Properties」选项卡中,修改「OpenRowset」属性为:
[目标数据库].[目标架构].[目标表] WITH (IDENTITY_INSERT = ON) - 确认标识列已正确映射,运行包即可生效
4. 改用SQL Server连接管理器
VS2022推荐使用SQL Server连接管理器,该类型支持直接配置身份插入:
- 创建新的「SQL Server」连接管理器,完成服务器及数据库配置
- 在数据流任务中使用「SQL Server Destination」组件
- 打开组件编辑器,在「Options」选项卡勾选「Keep Identity」选项,即可实现身份插入功能
内容的提问来源于stack exchange,提问作者John Osmond
相关产品推荐
相关产品推荐

