Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssis 变更记录集成_Ssis_Integration - Fatal编程技术网

Ssis 变更记录集成

Ssis 变更记录集成,ssis,integration,Ssis,Integration,我们需要执行一个日终流程,以从系统A提取每日事务,并仅将更改传输到系统B 问题是系统A只能提供系统A中可用的完整事务集 我最初的想法是使用一个暂存表(SQL Server),它将持久化来自系统a的数据,然后用于每天结束时执行比较的目的。这一切都可以通过使用表联接来标识所需的更新、插入和删除来完成 作为SSIS专家,我知道这可以在SSIS中使用查找来识别添加、更新和删除 问题: SSIS解决方案是更好的方法吗?为什么(可维护性、可扩展性、可扩展性) 哪一个表现更好?有没有这两种选择的经验 还有其他

我们需要执行一个日终流程,以从系统A提取每日事务,并仅将更改传输到系统B

问题是系统A只能提供系统A中可用的完整事务集

我最初的想法是使用一个暂存表(SQL Server),它将持久化来自系统a的数据,然后用于每天结束时执行比较的目的。这一切都可以通过使用表联接来标识所需的更新、插入和删除来完成

作为SSIS专家,我知道这可以在SSIS中使用查找来识别添加、更新和删除

问题:

  • SSIS解决方案是更好的方法吗?为什么(可维护性、可扩展性、可扩展性)

  • 哪一个表现更好?有没有这两种选择的经验

  • 还有其他选择吗


  • 因为您需要来自系统A的完整事务集,所以这就限制了您在源代码范围内的选项。我建议将该数据向下拉至原始文件目标。这将在开发过程中对您有所帮助,因为您可以反复运行需要这些数据的任务,而无需重新绘制。另外,确保源数据按源计算机排序。SSI在排序方面非常弱,除非您使用第三方组件(在某些情况下,这可能会限制您的职业生涯)

    不管怎样,让我们假设你有一个排序过的原始文件。接下来要做的是将其作为原始文件源放入数据流中。然后,有一个代表系统B的OLEDB(或任何东西)源。如果愿意,也可以使用原始文件。确保系统B中的数据使用与系统A排序相同的列进行排序

    将源标记为IsSorted=True,并在元数据中的相应列上设置SortKey值。这将告诉SSIS数据已预排序,并允许您加入关键列。否则,您可能需要等待几天,SSI才能对大型集进行排序

    向系统A和系统B的源添加多播,因为我们希望两次利用它们

    接下来,添加合并联接以将两个原始文件源联接在一起。将系统A设为左侧输入。当您将系统B连接到合并联接时,它将成为正确的输入。SSIS将在您在上一步中标记的已排序列上自动设置联接。将合并联接设置为使用左联接。通过这种方式,我们可以在系统A中找到系统B中不存在的行,并且我们可以比较现有行以查看它们是否被更改

    接下来,添加一个条件拆分。在这里,您可以根据条件定义2个输出缓冲区

    新行:ISNULL(MyRightTable.PrimaryKey)
    UpdatedRows:[构成更新行的内容]

    默认输出将接受任何不满足这两个条件的行,可以安全地忽略这些行

    我们还没有结束

    添加另一个合并联接

    这一次,从系统B的多播中输入左输入。从系统A的多播中输入正确的输入。同样,SSIS将为您设置连接密钥。将合并联接设置为使用左联接

    在该流中添加一个条件拆分,您只需要:

    DeletedRows:ISNULL(MyRightTable.PrimaryKey)

    默认输出将采用所有其他行,可以忽略这些行

    现在您有3个缓冲区

    其中2个来自您的第一次合并联接,表示新行和更新行。 其中1个来自第二次合并联接,表示已删除的行


    采取行动。

    在源系统和目标系统中,我们谈论的是哪种数据量?目标计算机是哪个版本的SQL Server(2005、2008、2008、2012)?什么版本(标准版、企业版、数据中心版、BI版)?您关心这个问题吗?