我在SSIS执行时面临以下错误:
执行Package.Error是:找不到变量。这发生了 尝试从变量中检索变量时 在执行包期间在容器上的集合,以及 变量不存在。变量名称可能已更改或 变量没有被创建。
要考虑的要点如下:
我们在SSIS中的Import中有大约1,00,000个文本文件 package(我们在SQL Temp表中导入文本文件)
我们正在使用Parallel.For循环在2个线程中执行SSIS导入。
执行65,000周围文件包开始给出上述错误。
我只在我的包中使用一个变量,如下所示,
importInventoryPackage.Connections["DestinationConnectionOLEDB"].ConnectionString = Shared.ConnectionStringToExecutePackage;
importInventoryPackage.Connections["SourceConnectionFlatFile"].ConnectionString = inventoryFilePath;
importInventoryPackage.Variables["tempTableName"].Value = tempTableName;
我在谷歌搜索类似的问题,但没有找到任何修复。 我们再次尝试在此错误抛出时分配vraiable,但在导入remianing文件时仍然会出现相同的错误..
任何人都可以帮助解决这个问题..我可以解决这个问题。
由于
答案 0 :(得分:0)
我怀疑这与在并行执行的多个组件中写入的同一变量有关。基本上这将是该变量的竞争条件。
例如,如果组件A和组件B可以并行执行并且都写入给定变量,那么当组件B尝试执行时,组件A可能会写入它(使其不可用)。由于两个作业的开始时间在不同的运行之间会有所不同,因此您可以获得包看起来随机失败的情况。
要解决此问题,您需要添加一个额外的变量,以便它们不被共享,或者强制一个组件在另一个组件开始之前完成(通过依赖项)。
希望这有帮助。