【问题标题】:SSIS For Each Item Loop reading same file during recursionSSIS For Each Item Loop 在递归期间读取相同的文件
【发布时间】:2018-12-18 17:45:26
【问题描述】:

我一直在尝试使用 For Each Item 循环使用多种方法提取文件列表(VB 脚本,通过平面文件连接直接用于每个循环,甚至执行用于 cmd 行扫描的进程任务)。

我注意到,当我启用数据查看器时,我倾向于多次列出同一个文件。

这对于 SSIS/For each 循环是否常见?

此外,当我尝试将此列表导入 SQL 表时(在过滤掉重复项后),我只收到了部分被清点的文件列表。

我必须假设递归到我的变量存在问题,导致变量在多个“通过”中保存相同的文件/路径。

这是我的尝试... 对于每个

变量映射

插入的 SQL 语句

参数映射

变量

【问题讨论】:

  • 你确定循环正在这样做吗?尝试禁用循环内的所有内容,并添加一个脚本任务,该任务会弹出一个显示变量值的消息框...我还将在引用该变量的函数上弹出一个消息框 - 确保它也在每次迭代时更新。
  • 我为每个循环添加了一些中断 - 当循环完成每个循环时,变量会发生变化并且似乎匹配。不过我只看了前10个左右...
  • 你可能需要在包中展示更多你正在做的事情。我从未使用函数来访问变量,但如果你说它正在更新,我相信你。我没有看到任何突出的东西会导致变量通过迭代成为静态...您可以尝试只使用变量两次而不是函数。
  • 抱歉,如果我之前的回答引起了任何混淆。 @DaveCullum 是正确的,索引从 0 开始,如下所述:docs.microsoft.com/en-us/sql/integration-services/… 此外,他建议对 Execute SQL Task 中的两个参数使用相同的变量是正确的。
  • 我将删除该功能并进行测试。我相信我之前尝试过,结果相同,但我会仔细检查。

标签: sql-server recursion ssis


【解决方案1】:

看起来问题是来自 NAS 的某种限制。 最终使用带有 cmd.exe 和参数的执行进程任务。
似乎任何运行得更快的东西都会导致数据问题。

如果这可能对某人有所帮助的测试摘要:

  1. 使用 cmd 执行进程 = 最快 w/ 完整数据
  2. 使用 Power Shell 执行进程=(get child)较慢 w/ 完整数据
  3. 使用 Power Shell 执行进程=(枚举文件)最快的数据丢失
  4. 每个循环的 SSIS = 缓慢不稳定的数据(重复和丢失)

【讨论】:

    猜你喜欢
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多