我有一个每晚从SS400数据库系统导出TON数据的SSIS过程。由于AS400 DB软件中存在错误,因此将重复项密钥插入数据表中。每次将新的副本添加到AS400表时,它都会导致我晚上的导出过程中断。这个问题已经从滋扰变成了问题。如何在准特有数据密钥上创建主密钥?
我需要的是有一个选项,只插入唯一的数据。如果有重复,请选择第一个遇到的重复行的行。有没有SQL语法可以帮助我做到这一点?我知道DISTINCT ROW子句,但在我的情况下不起作用,因为对于大多数违规记录,除组成PK的字段外,整个数据是非唯一的。
就我而言,我的主键在我的SQL Server数据库缓存中保持唯一性,而不是拥有数据的完整快照更为重要。有什么我可以做的强制这个约束出口在SSIS/SQL Server与崩溃的过程?
编辑
让我进一步明确了我的要求。我需要的是确保导出的SQL Server表中的数据与维护AS400数据表的数据保持相同的密钥。换句话说,创建唯一的行计数标识符将不起作用,也不会在没有主键的情况下插入所有数据。
如果AS400软件中的错误允许错误的重复PK,我想要忽略这些行,或者最好只选择具有重复键的行中的一个,但不能同时选择这两个行。
该SELECT语句可能发生在我的SSIS项目中的SELECT语句中,该语句通过ODBC连接连接到大型机。
我怀疑我的问题可能没有“简单”解决方案。然而,我希望我错了。
我应该只检查与PK关联的列吗?当我执行任务时,我仍然受到PK侵犯。 – RLH
另外,假设我确实有转换,我会做什么不同?在我的情况下,我有一个转换,从每个文本字段的末尾截断填充间距。 – RLH
这似乎是正确的答案,但我仍然得到PK Vialation错误。我进行了三重检查 - 我没有选中所有的PK字段(在这种情况下,有8个字段),并且在SORT转换之后放置了我的转换。我可以错过任何东西吗? – RLH