【问题标题】:SSIS Error: Violation of primary key constraint. cannot insert duplicate key in objectSSIS 错误:违反主键约束。无法在对象中插入重复键
【发布时间】:2016-04-12 18:46:13
【问题描述】:

我正在与一个团队合作解决 SSIS 包故障。该包包含四个序列容器,每个容器都有一组 sql 任务,它们截断目标表并将数据从源插入到目标。有时包失败并出现错误:违反主键约束。即使没有违规,也无法在对象中插入重复键,因为我们开始加载时表为空。请提供有关如何解决问题的建议

注意:源和目标在结构上有所不同。源表仅在一个 int 列上包含 PK。目标表包含一个额外的 PK,这是一个默认值。我不明白为什么我们需要一个默认列值的常量。

【问题讨论】:

  • 如果不从两个表中查看表定义或无法查看包,真的很难为您提供任何帮助。然而问题正如它所说。它发现了一个重复的行,结果 SQL Server 抛出了一个错误。您可以将错误行重定向到文件或检查运行日志以确定失败的值。
  • @Zane 使用请求的详细信息更新了问题
  • 听起来你需要更好地理解你的数据结构。此外,如果您查看包错误,它应该会准确显示导致问题的值。
  • 对不起各位!开发团队完成了可怕的日志记录设置。问题在于指向 QA 的测试环境,它们都同时运行。但他们的电子邮件记录告诉 PROD 包失败。 :(这让我的一天疯狂!

标签: sql-server ssis database-administration ssis-2012


【解决方案1】:

听起来即使在您运行 SSIS 包时目标表是空的,您插入的行本身也包含重复数据。 (即,如果您的 PK 被称为 [ID],则您尝试将多个相同的 [ID] 插入到表中)

【讨论】:

  • 但是我的主键来源为什么有重复项?
  • 我确定不是。您需要逐步检查要排除故障的程序包以查看发生了什么。数据查看器对此很有用。但是,如果您遇到主键违规并且其中没有数据,那么您肯定会尝试在包中插入重复项。
  • 在包中它只是在 SSIS 数据访问模式下直接从表加载数据到表或视图快速加载。不涉及任何查询。
猜你喜欢
  • 1970-01-01
  • 2017-06-09
  • 2021-05-08
  • 2019-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-13
相关资源
最近更新 更多