将 SSIS 包链接到 table 以控制哪些包应该 运行

Linking SSIS packages to a table to all me to control which packages should run

我是 SSIS 的新手,正在尝试使用 SSIS 复制当前的 ELT 进程(通过一组存储过程配置)。

ELT 过程: 我有一个配置 table,其中存储了所有 table 信息。 此 table 中的关键列称为 'Active'。这允许我在任何给定时间启用和停用我不希望 ELT 变为 运行 的 table。 ELT_SP 扫描 DWH_Process table 标记为活动的 table 秒,然后通过服务器代理执行该特定作业的计划。

SSIS 进程 我已将 SSIS 包配置为从 CRM 中提取数据并导入 DWH。 我已经使用 'sequence containers' 控制流来复制 ELT 过程,并且效果很好。

问题是,我必须更新 300+ tables 并重新部署到 DWH。

在 SSIS 中,还有哪些其他选项可供我使用,在通过作业代理执行包之前,是否有更简单的方法来添加 'check active status'?

我过去使用的设置是这样的:

  1. 使用配置设置 table,其中包含 PackageName、IsEnabled、Partition 等列...
  2. 创建一个循环包,您将在根包中调用它。循环包查询,配置 table 基于包的参数(例如 Partition=1),用于特定分区。该查询还会根据 IsEnabled = 1 或您的情况的不同条件进行过滤。在查询之后,您为从查询返回的每个 result/package 启动一个 foreach 循环。这个 foreach 然后用你的逻辑调用实际的包。您使用 foreach 中的变量来启动 Execute package task
  3. 创建根包
  4. 在根包的sequence container中,添加N个execute package tasks,调用loop package,传递一个参数在哪个分区执行。 (这纯粹是为了一次 运行 多个包的性能。)

这种方法的好处是您可以通过简单的更新语句启用禁用包,无需重新部署。您可以使用分区以获得最佳性能。