SSIS For Loop Container 运行s 成功但数据流任务和循环内部的脚本间歇性 运行
SSIS For Loop Container Runs Successfully But Data Flow Tasks and Scripts Inside of the Loop Intermittently Run
我已经对 SO 进行了一些研究,但很难找到解决方案(这可能是我正在搜索的方式),所以如果您知道,请指导我找到合适的 post。我也绝不是SSIS高手。
我有一个始终成功完成的 SSIS For 循环,但是循环内的各种数据流和脚本任务间歇性 运行(它们有时都 运行 成功,但当它们不't 运行,他们没有留下 运行...没有 green/red/yellow 复选标记,只是空白)。似乎循环中的 evalexpression 被错误地解释了。如果我在 VS 中手动重新 运行 包,有时它 return 是数据,有时则不是。此程序包部署到 SSISDB 并且 SQL 服务器代理作业 运行 每晚都成功,但同样,间歇性地 return 或没有 return 前几天的数据.
循环是根据日期设置的。 initexp 为其分配昨天的日期,assign 表达式在 运行 成功后将日期变量递增一天,然后计算结果应为 false。见图片
@begindate
变量的表达式是
= dateadd("d",-1,getdate())
这是 For 循环及其内部项目的图像。以防万一,里面的任务只是出去并命中一个api,将结果存储在一个变量中,然后通过各种脚本任务处理它。
有什么建议的后续故障排除步骤吗?有什么我忽略/遗漏的吗?
成功图片运行无数据可变信息
使用@[System::StartTime] 代替 GETDATE()
由于 GETDATE()
是一个每次调用时都会计算的函数,如果在 for 循环表达式中使用它可能会导致一些问题。
在 Eval 表达式中使用 dateadd("d",-1,GETDATE())
意味着它 是动态的并且不包含固定值.
您可以受益于 the system variable @[System::StartTime]
,其中包含程序包执行的日期时间。用于评估 @[User::begindate]
的表达式将是:
= dateadd("d",-1, @[System::StartTime])
初始化表达式
@startdate = @begindate
EvalExpression
@startdate <= dateadd("d",-1,@[System::StartTime])
请注意,如果 @[System::StartTime]
和 @StartTime
在表达式中不起作用,则添加一个类型为 DateTime
的新变量,并计算为表达式 = @[System::StartTime]
然后在 EvalExpression 中使用这个变量。
赋值表达式
@startdate = dateadd("d",1,@startdate)
我已经对 SO 进行了一些研究,但很难找到解决方案(这可能是我正在搜索的方式),所以如果您知道,请指导我找到合适的 post。我也绝不是SSIS高手。
我有一个始终成功完成的 SSIS For 循环,但是循环内的各种数据流和脚本任务间歇性 运行(它们有时都 运行 成功,但当它们不't 运行,他们没有留下 运行...没有 green/red/yellow 复选标记,只是空白)。似乎循环中的 evalexpression 被错误地解释了。如果我在 VS 中手动重新 运行 包,有时它 return 是数据,有时则不是。此程序包部署到 SSISDB 并且 SQL 服务器代理作业 运行 每晚都成功,但同样,间歇性地 return 或没有 return 前几天的数据.
循环是根据日期设置的。 initexp 为其分配昨天的日期,assign 表达式在 运行 成功后将日期变量递增一天,然后计算结果应为 false。见图片
@begindate
变量的表达式是
= dateadd("d",-1,getdate())
这是 For 循环及其内部项目的图像。以防万一,里面的任务只是出去并命中一个api,将结果存储在一个变量中,然后通过各种脚本任务处理它。
有什么建议的后续故障排除步骤吗?有什么我忽略/遗漏的吗?
成功图片运行无数据可变信息
使用@[System::StartTime] 代替 GETDATE()
由于 GETDATE()
是一个每次调用时都会计算的函数,如果在 for 循环表达式中使用它可能会导致一些问题。
在 Eval 表达式中使用 dateadd("d",-1,GETDATE())
意味着它 是动态的并且不包含固定值.
您可以受益于 the system variable @[System::StartTime]
,其中包含程序包执行的日期时间。用于评估 @[User::begindate]
的表达式将是:
= dateadd("d",-1, @[System::StartTime])
初始化表达式
@startdate = @begindate
EvalExpression
@startdate <= dateadd("d",-1,@[System::StartTime])
请注意,如果 @[System::StartTime]
和 @StartTime
在表达式中不起作用,则添加一个类型为 DateTime
的新变量,并计算为表达式 = @[System::StartTime]
然后在 EvalExpression 中使用这个变量。
赋值表达式
@startdate = dateadd("d",1,@startdate)