2013-04-06 100 views
2

在我的ssis包中,我在顺序容器中有数据流任务。 OLEDB是Source和Flat文件是Destination。 我已经给出了平面文件位置的变量(@ [User :: strUnknownFileLocation])。也为平面文件的名称我添加了一个变量(@ [User :: StrUnknownFileName])。数据流任务完成后,我发送邮件任务。我在发送邮件任务中将该文件作为附件附加。用SSIS包中的附件发送邮件任务

这是我在我的文件名变量(@ [User :: StrUnknownFileName])中计算的表达式。我已经将它设置为“属性中的评估表达式为真”。

"UnknownValue_"+ (DT_STR,4,1252)YEAR(getdate()) +(MONTH(getdate()) < 10 ? "0" : "")+ (DT_STR,4,1252)MONTH(getdate()) +(DAY(getdate()) < 10 ? "0" : "") + (DT_STR,4,1252)DAY(getdate()) + ".txt" 

这是我的平面文件连接属性表达--Connection串

@[User::strUnknownFileLocation]+ @[User::StrUnknownFileName] 

这是我的平面文件连接属性表达

可变的文件位置我没有任何表达。我在变

(@[User::strUnknownFileLocation]). 

像中号添加位置的值:\ ETL \ TMP \ 在发送邮件的任务,我有附件的附件和表达被赋予这样的,

@[User::strUnknownFileLocation]+ @[User::StrUnknownFileName] 

我跑这个包昨天很好。它将一个文件附加为UnknownValue_20130405.txt。 但是,当我今天打开软件包时,发送邮件任务时发生错误。当我点击错误,它说它找不到文件UnknownValue_20130406.txt或我没有权限打开该位置。它有点奇怪。

因此,我执行DFT任务。所以文件生成了。然后它的工作原理是因为文件存在。那么为什么它不在首位。所以现在明天当我打开我的包并尝试运行时,它不会运行,因为那天没有文件?但是,如果我去运行只有DFT任务它将生成一个平面文件,它将在该位置有一个平面文件。但这不是应该如此。

有什么我做错了吗?我无法理解这一点。任何帮助将非常感激。

在此先感谢。

回答

2

我相信你遇到了一个问题,因为作为预执行阶段的一部分,SSIS验证它需要的所有资源都可用。在新的一天中,该文件在软件包运行之后才可用。

为了解决这个问题,你可以告诉你SSIS在验证它之前等待它真正需要使用资源。在SSIS中的任何元素上,它应该有一个DelayValidation属性,默认情况下它被设置为False。在“发送邮件任务”中将值设置为True