SSIS错误问题(查找和OLE DB命令)

时间:2010-12-15 09:41:56

标签: sql sql-server sql-server-2005 ssis

我收到SSIS包的错误,我不知道如何修复。我觉得我需要提供一个背景知道我想要做些什么来帮助你理解:

我正在使用OLE DB源数据库(SRC DB),并将此输入输出到Lookup(DEST DB)。我正在检查DEST DB中是否存在SRC DB中的字段。在我的情况下,我正在检查的字段称为inkexID,它是一个INT NOT NULL,是一个复合主键和一个ID字段。

查找是检查DEST DB中是否存在SRC DB中存在的inkexID。如果它不存在,则将其和其他3个字段插入DEST DB,如果它存在则只更新DEST DB中的1个字段。

我的问题在于: 当涉及到查找时,它会检查2个表中的inkexID并看到没有匹配,但是组件失败。它似乎没有发送任何错误输出(这是调用初始插入OLE DB命令所需的。)。如果我将错误配置设置为重定向行或忽略失败,则会在插入时失败。它给我一个关于违反我的数据库架构的错误,即使我试图插入的字段是12345.

我将该字段作为主键删除并将其设置为允许空值,因此当我再次运行它时,我很惊讶地发现它正在尝试在字段中插入NULL,即使SRC DB中的值是12345 。

看来Lookup 没有任何输出。任何人都可以帮助解决为什么没有任何东西会出现在查找中

非常感谢, 奇安

2 个答案:

答案 0 :(得分:0)

使用SQL Server Profiler在服务器上运行跟踪。

启动跟踪,然后执行包。探查器跟踪将捕获发送到数据库服务器的所有实际T-SQL命令。然后,您可以将每个命令复制到查询编辑器窗口,执行,查看结果集以及查看执行计划以进行调整。

答案 1 :(得分:0)

我发现错误是什么:

我已经设置了SRC DB的inkexID字段,以便从DEST DB中查找inkexID。然而,我无意中将其设置为勾选并从SRC DB设置列以替换DEST DB中的inkexID。我只是简单地解开它并简单地建立了这种关系。

RESULT !!!它现在检查inkexID,如果它存在于DEST DB中,只会用当前时间更新lastUpdated时间,否则它会插入正确的inkexID,当前时间为dateAdded和dateUpdated,statusID为活动状态。

耶!