如何解决SSIS间歇变量错误:系统找不到指定的文件
对此问题的正式答案是,它是sql 2005和2008中的错误。许多访问同一变量的任务会导致竞争状态,并且某些任务会获得表达式的默认值而不是评估值。
解决方法是确保默认值(在属性表中为遇到问题的任何属性定义的值)应为将在生产环境中使用的值。
这样,当竞争条件在生产中发生时,SSIS将退回到程序包值,该值仍然有效。
在开发中?好吧,您将不得不手动处理此问题,直到我们从Microsoft获得错误修复为止。
解决方法
我们的SSIS将结构化的控件包和从控件包调用的许多子包(大约30个)打包为一个结构。子程序包通过“执行程序包任务”来调用。每个子程序包有一个执行程序包任务。每个执行程序包任务都使用文件连接管理器来指定子程序包dtsx文件的路径。每个子程序包有一个文件连接管理器。每个文件连接管理器都有一个为ConnectionString属性定义的表达式。该表达式如下所示:
@[Template::FolderPackages]+"MyPackage.dtsx"
每个软件包的文件名都不相同。在SSIS程序包配置文件中指定了变量(FolderPackages)。
运行时生成的错误是
加载软件包文件“ MyPackage.dtsx”时出现错误0x80070002
系统找不到指定的文件。“失败的程序包与一次运行的程序不同,有时根本没有失败。这是在完全相同的环境/数据等上运行时的结果。
我在发生此错误期间运行FileMon,发现发生错误时SSIS尝试从错误的位置(即从system32)读取dtsx文件。我检查了一下是否与@
[Template ::
FolderPackages]变量为空时会发生的情况相同,但是由于每个子包都使用了相同的变量,并且对于某些子包有效,但对于其他子包却无效,所以我没有对这个事实的解释。
有什么明显的事情,或者是时候与Microsoft进行支持电话了?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。