通过 MVS 2015 ODBC 创建 SSIS 包 IDENTITY_INSERT

SSIS Package Creation via MVS 2015 ODBC IDENTITY_INSERT

今天,我试图弄清楚如何通过我使用 MVS 2015(使用 SSDT 14.0.61709.290)构建的 SSIS 包,将带有标识列的行插入到 Microsoft SQL 2016 数据库中。我正在从另一个数据源(可以正常工作)中提取数据,并将行插入目标 table 中,该目标先前已在目标 SQL 服务器上定义,如下所示:

create table [DB_NAME].[dbo].[TableName]
(
key_value IDENTITY(1,1) primary key,
...other values...
)
GO

当我将值从 数据源移动到新数据源时,出现错误:

[MSQL Deal [70]] Error: Open Database Connectivity (ODBC) error occurred. state: '23000'. Native Error Code: 544. [Microsoft][SQL Server Native Client 11.0][SQL Server]Cannot insert explicit value for identity column in table 'TableName' when IDENTITY_INSERT is set to OFF.

搜索时出现的大量论坛和结果表明在修改目标的列映射页面时应该有一个允许标识插入的复选框。此选项不存在,MVS/SSDT 2015/2017 中的 "Advanced Editor" 接口只有列映射,没有用于处理标识列插入的选项。

我还尝试在我的控制流中添加一个步骤来打开身份插入,但出于某种原因,在此级别启用 IDENTITY_INSERT 不起作用,我的包在所有插入尝试中仍然失败。

现在我要完全诚实,我完全知道我有其他选择来让它工作 - 但请记住,我正在构建开发测试和生产数据库,我试图保持脚本化和自动化以及何时进一步部署的白痴证明。我不想引入一个中间步骤来强制我们的一个 DBA 等待第一个 SSIS 包完成,运行 一个 SQL 查询将为特定 table,运行 下一个包,然后是 运行 禁用标识插入的查询。我将不得不这样做很多次....

SSIS 2015(我使用 MVS/SSDT 2017 尝试过)是否完全放弃了对标识插入的支持?我是否必须对我的 DSN 使用不同的接口才能使其正常工作(ODBC?)?

这仍然是一个选项,但它隐藏在某处真的非常非常好吗?

ODBC 目标没有身份插入选项,如果它包含 Keep Identity 复选框,您可以使用 OLEDB Destination 代替,可以使用