sql-server - SSIS For Loop 容器运行成功,但循环内的数据流任务和脚本间歇性运行
问题描述
我已经对 SO 进行了一些研究,但是很难找到解决方案(这可能是我正在搜索的方式),所以如果您知道一个合适的帖子,请指导我找到一个合适的帖子。我也绝不是 SSIS 大师。
我有一个总是成功完成的 SSIS For Loop,但是循环内的各种数据流和脚本任务间歇性地运行(它们有时都运行成功,但是当它们不运行时,它们没有任何迹象表明它们运行了...没有绿色/红色/黄色复选标记,只是空白)。似乎循环中的 evalexpression 被错误地解释了。如果我在 VS 中手动重新运行包,有时它会返回数据,有时它不会。此包部署到 SSISDB 并且 SQL Server 代理作业每晚都成功运行,但同样,间歇性地返回或不返回前几天的数据。
循环是根据日期设置的。initexp 为其分配昨天的日期,assign 表达式在成功运行后将 date 变量增加一天,然后应评估为 false。看图片
变量的@begindate
表达式为
= dateadd("d",-1,getdate())
这是 For 循环及其内部项目的图像。万一重要,里面的任务只是出去并打一个api,将结果存储在一个变量中,然后通过各种脚本任务对其进行处理。
故障排除的任何可取的后续步骤?有什么我忽略/遗漏的吗?
没有数据和变量信息的成功运行的图片
解决方案
使用 @[System::StartTime] 而不是 GETDATE()
由于GETDATE()
是一个每次调用时都会评估的函数,因此如果在 for 循环表达式中使用它可能会导致一些问题。
在 Eval 表达式中使用dateadd("d",-1,GETDATE())
意味着它是动态的并且不包含固定值。
您可以从包含包执行日期时间的系统变量中受益。 @[System::StartTime]
用于评估的表达式@[User::begindate]
将是:
= dateadd("d",-1, @[System::StartTime])
初始化表达式
@startdate = @begindate
评估表达式
@startdate <= dateadd("d",-1,@[System::StartTime])
请注意,如果在表达式中不起作用,则添加一个新的类型变量,@[System::StartTime]
并且Evaluate is as expression然后在 EvalExpression 中使用此变量。@StartTime
DateTime
= @[System::StartTime]
赋值表达式
@startdate = dateadd("d",1,@startdate)
推荐阅读
- java - Young GC发生时,ext root扫描需要很长时间。可能的原因是什么?
- javascript - 你好,我的目标是,当我点击“创建复选框”按钮时,它会自动创建一个带有 ID 的复选框,而不使用输入类型文本
- jquery - 使用动画的 jQuery 滚动到 div 在 safari 中无法正常工作
- android - 如何通过特定端口路由我的 android 应用程序的互联网数据?
- android - 类在firebase消息颤动上找不到异常
- azure - Azure 设置递归 ACL 导致 403 - 虽然更新没问题
- python - 显示来自 tensorflow 数据集类的图像
- python - Tweepy:在两个日期之间按标签搜索推文
- javascript - 如何使用 Webpack 5 运行热重载 (HMR)?
- sql - SQL 中的块平均值