【问题标题】:SSIS Send Email File Attachment FailureSSIS 发送电子邮件文件附件失败
【发布时间】:2018-01-11 13:55:17
【问题描述】:

我的 SSIS 包创建一个 csv,其文件名包含日期时间戳。我想通过电子邮件发送此文件。所以我有一个包含通配符的变量来表示我的文件。我已将文件附件的发送电子邮件任务表达式设置为我的 2 个变量

@filelocation + @filename

@filelocation = C:\User\project\

@filename = final_ * _ *.csv

所以它正在寻找C:\User\project\final_*_*.csv

文件存在,但出现以下错误

发送邮件任务 [发送邮件任务] 出错:文件“C:\User\project\final__.csv”不存在,或者您没有访问该文件的权限.

发送邮件任务时出错:任务验证期间出现错误。

我已延迟验证,但仍然无法使用任何建议将不胜感激。 该文件存在,我正在以管理员身份运行

【问题讨论】:

  • C:\User\project\final__.csv 文件的文件名格式无效
  • * 是文件命名中的通配符,Windows 不允许。使用其他字符,例如 # 或其他内容
  • 为什么? @filename 变量使用 * 作为通配符,因此它正在寻找一个文件名“Final_WILDCARD_WILDCARD.csv。我在整个包中都使用了这个变量并且使用通配符没有问题
  • 发送邮件任务需要您的表达式来生成附件的确切路径和文件名。
  • 但是因为我不知道文件附件的确切名称,因为它包含时间戳,这是否意味着我不能使用通配符变量作为文件名?

标签: sql-server validation ssis etl sendmail


【解决方案1】:

如果您正在寻找具有以下模式final_ * _ *.csv 的文件,请添加一个Foreach Loop Container,它从@filelocation 目录中检索具有以下模式final_ * _ *.csv 的文件,并为每个文件执行发送邮件任务。 (如果只有一个文件,就只发送一个)

或者您必须使用脚本任务获取文件并将结果存储在变量中然后使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    • 2013-03-03
    相关资源
    最近更新 更多