2010-12-15 98 views
0

我收到SSIS包的错误,我不知道如何解决。我觉得我需要给出一个背景,以了解我正在尝试做什么来帮助您理解:SSIS错误(查找和OLE DB命令)的问题

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

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

我的问题就出在这里: 当涉及到的查找,它会检查inkexID超过2台,看到的是没有比赛,但随后的组件出现故障。它似乎没有发送任何错误输出(这是调用初始插入OLE DB命令所需的内容)。如果我将错误配置设置为重定向行或忽略失败,则然后在插入时失败。它给了我一个关于违反我的数据库模式的错误,即使我试图插入的字段是12345.

我删除了该字段作为主键并将其设置为允许空值,所以当我再次运行它时,我被惊讶地看到它正试图插入一个空到现场,即使在SRC DB值是12345

似乎有从查找输出什么。任何人都可以帮助为什么没有什么会出现在查找?

大加赞赏, 奇安

回答

0

使用SQL Server Profiler来在服务器上运行的轨迹。

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

0

我已经发现了什么错误是:

我已经建立了SRC DB的inkexID领域查找从DEST DB的inkexID。然而,我却意外地设置了它,并设置了SRC DB中的列来替换DEST DB中的inkexID。我只是简单地解决它并简单地建立关系。

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

耶!