我只是想知道这是否是执行此任务的正确方法。 我们非常感谢任何其他改进建议。
我的SSIS包装上有以下内容。
如何知道数据传输成功?这样我就可以使用发送邮件了 表示成功或失败。
如何安排此程序包以便它自动运行(每周二。)
我已尝试过以下建议。请参阅新的数据流任务。
OLE DB Source - 指向数据库服务器1中的视图 Lookup从OLE DB源获取所有行。 (源和查找上的rowcount) 匹配。
在查找任务上,我已将错误输出配置为在所有映射列上使用“重定向行”。
在OLE DB目标(目标表中,它已经有来自源的记录子集。所以Configured Error输出获取插入的不匹配行。
当我执行包时 - 我收到主键约束错误 - 无法插入重复键。
有什么建议吗?
答案 0 :(得分:1)
您需要双击Execute SQL Task
到Send Mail Task
当前它的绿色连接器,这表示它只会在成功时采用该路径。您需要将约束更新为完成,因为您不关心它是成功还是失败。
听起来您的数据流从源中提取所有数据并写入临时表。在“执行SQL任务”中,然后使用查询将数据添加到目标表中,并且不存在。
这可以合并为单个数据流。在OLE DB源和OLE DB目标之间,添加查找任务。从2005年开始,Lookup的行为与2008年不同。您将编写一个查询来回退目标表中的业务键,然后将其与来自OLE DB源的内容进行比较。在界面中映射这些键。
您只想要不匹配的行,这样您就需要获得"不匹配的记录"从查找。在2005年,不匹配输出的选项不存在,因此您需要将错误输出路由到OLE DB目标。
安迪·伦纳德(Andy Leonard)对如何做到这一点有一个很好的小写:Configuration an SSIS 2005 Lookup Transformation for a Left Outer Join唯一不同的是,你不关心匹配的行。您需要选择Ignore Failure
,而不是Redirect Row
。然后,当您将查找连接到OLE DB目标时,您将看到两个选项。绿色连接器是匹配的,红色连接器是不匹配的行。将红色路径绑定到目的地