在 Microsoft SQL 的单个过程中获取对作业的调用和复杂选择的结果



我有一个SSIS作业和一个相对复杂的选择,使用相同的数据。我必须这样做,以便我的客户不必单独调用它们,而是使用一件事来获取选择的结果并调用作业。

我最初的计划是创建一个过程,该过程将接受必要的输入,然后输出一个包含选择结果的表变量。

但是,在阅读Microsoft文档后,我发现表变量可能无法保存超过 100 行的结果,而我可能想要选择 ~10 000 行。现在我被难住了。从一个组件调用作业并选择数据的最佳方式是什么?

我有权创建视图、过程,并且可以编辑 SSIS 作业。用户将为我提供 2 个参数。

这就是我建议您在这种情况下执行的操作方式,以消除SSIS的复杂性。

  1. 创建所需的 SP;而不是表变量;将输出推送到表中。此表可以动态添加(使用 CREATE TABLE 脚本动态添加(,也可以作为缓冲区存在于始终可用的数据库中。
  2. 在控制流中调用此 SP。
  3. 在"数据流"任务中,从此缓冲区表中进行选择。
  4. 完成 SSIS 工作后,刷新缓冲区表,即截断表。

警告:在并发方案中可能会遇到问题;若要消除这种情况,您应该有一个列BatchIDBatchStartTimeStamp,它可以存储每次运行的唯一值。

可以从 SSIS 包传递BatchIDBatchStartTimeStamp的数据。

最新更新