在我的ssis包中,我在序列容器中有数据流任务。OLEDB是源文件,平面文件是目标文件。我已经给出了平面文件的位置变量(@[User::strUnknownFileLocation])。另外,对于平面文件的名称,我添加了一个变量(@[User::StrUnknownFileName])。数据流任务后我有发送邮件任务。我在发送邮件任务中将那个平面文件作为附件附加。
这是表达式我正在评估我的文件名变量(@[User::StrUnknownFileName])。我在属性中设置了表达式的值为True。
"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"
这是我的平面文件连接属性表达式——连接字符串
@[User::strUnknownFileLocation]+ @[User::StrUnknownFileName]
这是我的平面文件连接属性表达式
文件位置变量我没有任何表达式。我在变量
中添加了location的值(@[User::strUnknownFileLocation]).
像M: ETL Tmp 在发送邮件任务中,我有一个附件,附件的表达式如下所示:
@[User::strUnknownFileLocation]+ @[User::StrUnknownFileName]
我运行了包,昨天天气很好。它正在附加一个名为UnknownValue_20130405.txt的文件。但是当我今天打开包裹时,它在发送邮件任务中出现了一个错误。当我点击错误,它说它找不到文件UnknownValue_20130406.txt或我没有权限打开该位置。这有点奇怪。
所以,我执行DFT任务。文件生成了。然后它工作,因为文件在那里。那么为什么它一开始就不跑呢?所以现在明天当我打开我的包并试着运行时,它不会运行,因为那天没有文件?但是如果我只运行那个DFT任务,它会生成一个平面文件,它会在那个位置有一个平面文件。但这是不应该的。
我做错了什么吗?我无法理解这一点。如有任何帮助,我将不胜感激。
提前感谢。
我相信您遇到了一个问题,因为SSIS作为预执行阶段的一部分,验证它所需的所有资源是否可用。在新的一天,该文件在包运行之后才可用。
要解决这个问题,可以告诉SSIS等到实际需要使用资源时再验证它。在SSIS中的任何元素上,它都应该具有默认设置为False的DelayValidation
属性。在"Send Mail Task"