首页 文章

通过MVS 2015 ODBC IDENTITY_INSERT创建SSIS包

提问于
浏览
2

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

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

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

[MSQL Deal [70]]错误:发生了打开数据库连接(ODBC)错误 . 州:'23000' . 本机错误代码:544 . [Microsoft] [SQL Server Native Client 11.0] [SQL Server]当IDENTITY_INSERT设置为OFF时,无法在表'TableName'中为标识列插入显式值 .

搜索时会出现大量的论坛和结果,表明在修改目标的列映射页面时应该有一个允许标识插入的复选框 . 此选项不存在,MVS / SSDT 2015/2017中的“高级编辑器”界面仅具有列映射,没有用于处理标识列插入的选项 .

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

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

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

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

1 回答

  • 0

    ODBC目标没有标识插入选项,如果是,则可以使用 OLEDB Destination ,它包含一个 Keep Identity 复选框,可以使用

    enter image description here

相关问题