执行Package.Error是:找不到变量

时间:2017-01-27 07:07:11

标签: ssis

我在SSIS执行时面临以下错误:

  

执行Package.Error是:找不到变量。这发生了   尝试从变量中检索变量时   在执行包期间在容器上的集合,以及   变量不存在。变量名称可能已更改或   变量没有被创建。

要考虑的要点如下:

  1. 我们在SSIS中的Import中有大约1,00,000个文本文件 package(我们在SQL Temp表中导入文本文件)

  2. 我们正在使用Parallel.For循环在2个线程中执行SSIS导入。

  3. 执行65,000周围文件包开始给出上述错误。

  4. 发生此错误后,无法导入任何Remaing文件并抛出相同的错误。
  5. 我只在我的包中使用一个变量,如下所示,

        importInventoryPackage.Connections["DestinationConnectionOLEDB"].ConnectionString = Shared.ConnectionStringToExecutePackage;
        importInventoryPackage.Connections["SourceConnectionFlatFile"].ConnectionString = inventoryFilePath;
        importInventoryPackage.Variables["tempTableName"].Value = tempTableName;
    

    我在谷歌搜索类似的问题,但没有找到任何修复。 我们再次尝试在此错误抛出时分配vraiable,但在导入remianing文件时仍然会出现相同的错误..

    任何人都可以帮助解决这个问题..我可以解决这个问题。

    由于

1 个答案:

答案 0 :(得分:0)

我怀疑这与在并行执行的多个组件中写入的同一变量有关。基本上这将是该变量的竞争条件。

例如,如果组件A和组件B可以并行执行并且都写入给定变量,那么当组件B尝试执行时,组件A可能会写入它(使其不可用)。由于两个作业的开始时间在不同的运行之间会有所不同,因此您可以获得包看起来随机失败的情况。

要解决此问题,您需要添加一个额外的变量,以便它们不被共享,或者强制一个组件在另一个组件开始之前完成(通过依赖项)。

希望这有帮助。

https://stackoverflow.com/a/8883372/7462678