gpt4 book ai didi

sql-server - 检查数据库表中的条目后运行 SSIS 包

转载 作者:行者123 更新时间:2023-12-04 00:40:36 25 4
gpt4 key购买 nike

背景

我想将 8 个表的数据从 Source (这从其他地方获取数据) 加载到 Target。我的源代码中有一个控制表,每次加载表时都会维护条目。因此,在我开始我的 SSIS 包之前,我需要检查源中的控制表是否包含所有 8 个表的条目。

SSIS 包结构

  1. 两个变量 RecordCount(默认为 0)和 SQLQueryForRecordCount(从控制表获取记录计数的 SQL 查询)
  2. 执行 SQL 任务 - 我在这里执行选择查询以获取记录计数并将结果传递给变量 RecordCount
  3. 在使用执行 sql 脚本 连接数据流时,我选择了 Expression as Evaluation Operation 和 expression 作为 @[User::RecordCount] == 8 以便在 RecordCount = 8 时执行数据流。

到目前为止一切正常。

问题是我们不确定何时将条目插入到源中的控制表中(可以在 3 小时窗口内的任何时间完成)。所以我想循环第二步(执行 sql 脚本)直到 RecordCount 变量值达到 8,然后开始下一个数据流任务。

如何实现?请帮助我。

最佳答案

我发现在存储过程中更容易执行此操作,并且还更喜欢无需编辑/部署/升级我的包即可对其进行调整的功能。

在 SSIS 中,您需要一个调用存储过程的简单执行 SQL 任务。 然后对于存储过程,你会想要这样的东西:

DECLARE @CountProcessed int

SELECT @CountProcessed = SUM(ControlField)
FROM ControlTable

WHILE @CountProcessed <> 8
BEGIN
WAITFOR DELAY 00:01:00 --Set to whatever time increment you want to wait
SELECT @CountProcessed = SUM(ControlField)
FROM ControlTable
END

然后您可以丢弃您的 SSIS 变量,并简单地从这个过程开始。无需约束。

关于sql-server - 检查数据库表中的条目后运行 SSIS 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44189049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com