为什么SSIS OLE DB命令转换不将所有记录插入表中?

时间:2011-08-01 19:48:08

标签: sql ssis insert oledb

我有一个SSIS包,它从SQL数据库中的表中获取数据,并在另一个数据库的表中插入(或更新现有行)。

这是我的问题,在lookup之后,我插入或更新了行,但进入插入的行的一半以上都没有添加到表中。

对于插入,我使用Ole Db Command对象,其中我使用了我测试过的insert命令。我发现了为什么程序包在没有错误通知的情况下运行但仍然没有在表中插入所有行。

我已经检查了sqlProfiler,它说命令是 RCP:已完成,我认为这意味着它应该有效。

如果我在sql management studio中手动插入 sql profiler 给我的数据(它用来执行insert语句的值),它就可以了。我检查了数据,一切似乎都很好(未插入的行中没有非法数据)。

我完全迷失了如何解决这个问题,任何人都有想法?

1 个答案:

答案 0 :(得分:2)

使用OLE DB命令而不是OLE DB Destination插入记录的任何特定原因?

编辑1:

因此,您看到从查找转换匹配输出发送到OLE DB目标的x行(比如100),但只插入了y行(比如60)。那是对的吗?不要插入到实际的目标表中,而是尝试插入虚拟表以查看是否正确地重定向了所有行。您可以通过单击OLE DB目标上的“新建...”按钮来创建虚拟表。它将为您创建一个匹配输入列的表。这可能有助于缩小问题范围。

编辑2:

您尝试使用的表的名称是什么?我认为这不重要。我很好奇,如果名称是任何保留关键字。我能想到的另一件事是,是否有任何其他进程可能会在目标表上触发某些操作(从包内或包外)?我怀疑其他一些进程可能正在从表中删除行。