小编典典

SSIS间歇变量错误:系统找不到指定的文件

sql

我们的SSIS将结构化的控件包和从控件包调用的许多子包(大约30个)打包为一个结构。子程序包通过“执行程序包任务”来调用。每个子程序包有一个执行程序包任务。每个执行程序包任务都使用文件连接管理器来指定子程序包dtsx文件的路径。每个子程序包有一个文件连接管理器。每个文件连接管理器都有一个为ConnectionString属性定义的表达式。该表达式如下所示:

@[Template::FolderPackages]+"MyPackage.dtsx"

每个软件包的文件名都不相同。在SSIS程序包配置文件中指定了变量(FolderPackages)。

运行时生成的错误是

加载软件包文件“ MyPackage.dtsx”时出现错误0x80070002

系统找不到指定的文件。“失败的程序包与一次运行的程序不同,有时根本没有失败。这是在完全相同的环境/数据等上运行时的结果。

我在发生此错误期间运行FileMon,发现发生错误时SSIS尝试从错误的位置(即从system32)读取dtsx文件。我检查了一下是否与@
[Template ::
FolderPackages]变量为空时会发生的情况相同,但是由于每个子包都使用了相同的变量,并且对于某些子包有效,但对于其他子包却无效,所以我没有对这个事实的解释。

有什么明显的事情,或者是时候与Microsoft进行支持电话了?


阅读 149

收藏
2021-04-14

共1个答案

小编典典

对此问题的正式答案是,它是SQL 2005和2008中的错误。许多访问同一变量的任务会导致竞争状态,并且某些任务会获得表达式的默认值而不是评估值。

解决方法是确保默认值(在属性表中为遇到问题的任何属性定义的值)应为将在生产环境中使用的值。

这样,当竞争条件在生产中发生时,SSIS将退回到程序包值,该值仍然有效。

在开发中?好吧,您将不得不手动处理此问题,直到我们从Microsoft获得错误修复为止。

2021-04-14