gpt4 book ai didi

sql-server - SSIS For Loop容器成功运行,但循环内的数据流任务和脚本间歇运行

转载 作者:行者123 更新时间:2023-12-04 01:55:14 25 4
gpt4 key购买 nike

我已经对 SO 进行了一些研究,但很难找到解决方案(这可能是我正在搜索的方式),所以如果您知道的话,请将我指向合适的帖子。我也绝不是 SSIS 专家。

我有一个总是成功完成的SSIS For循环,但是循环内部的各种数据流和脚本任务间歇性地运行(它们有时确实运行成功,但是当它们不运行时,它们就没有指示器他们运行...没有绿色/红色/黄色复选标记,只是空白)。似乎循环中的 evalexpression 被错误地解释了。如果我在 VS 中手动重新运行包,有时它会返回数据,有时则不会。此程序包部署到 SSISDB,SQL Server 代理作业每晚成功运行,但再次间歇性地返回或不返回前几天的数据。

循环是根据日期设置的。 initexp 为其分配昨天的日期,assign 表达式在成功运行后将日期变量递增一天,然后计算结果应为 false。看图

forlooplogic

@begindate 变量的表达式是

= dateadd("d",-1,getdate())

这是 For 循环及其内部项目的图像。如果重要的话,里面的任务只是出去并点击一个 api,将结果存储在一个变量中,然后通过各种脚本任务处理它。

forloopcontents

有什么建议的故障排除后续步骤吗?有什么我忽略/遗漏的吗?

无数据可变信息运行成功图

successnodata

最佳答案

使用@[System::StartTime] 代替 GETDATE()

由于 GETDATE() 是一个每次调用时都会计算的函数,如果在 for 循环表达式中使用它可能会导致一些问题。

在 Eval 表达式中使用 dateadd("d",-1,GETDATE()) 意味着它是动态的并且不包含固定值

您可以受益于 the system variable @[System::StartTime] 包含程序包执行的日期时间。用于评估 @[User::begindate] 的表达式将是:

= dateadd("d",-1, @[System::StartTime])

初始化表达式

@startdate = @begindate

求值表达式

@startdate <= dateadd("d",-1,@[System::StartTime])

请注意,如果 @[System::StartTime]@StartTime 在表达式中不起作用,则添加一个类型为 的新变量DateTime 和 Evaluate 是表达式 = @[System::StartTime] 然后在 EvalExpression 中使用这个变量。

赋值表达式

@startdate = dateadd("d",1,@startdate)

关于sql-server - SSIS For Loop容器成功运行,但循环内的数据流任务和脚本间歇运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55167068/

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