SSIS压缩文件并以邮件附件发送

PS: 1.由于本文使用了msdb..sp_send_dbmail发送邮件.所以应先对数据库邮件进行配置.

   2.在压缩文件时,使用了7-Zip进行压缩,所以请到http://www.7-zip.org/下载该压缩工具,由于该压缩工具基于 GNU LGPL 许可协议,所以可自由使用.下载完.安装到E:/7-Zip/ 由于本文使用的是这个路径,所以可以自行设置路径.并在以下使用到7z.exe时指定具体的路径.

 

.打开Business Intelligence Development Studio平台.然后文件->新建->项目->选择SSIS项目.

.菜单中选择SSIS->变量.调出变量窗口.然后新增几个变量.如图:

    

InFileFolder : 准备压缩文件的目录

InFileType : 准备压缩文件的文件类型.即扩展名

OutExecuteCommand : 执行压缩命令的命令参数

OutFileFolder : 存储压缩文件的目录

OutFileName : 存储压缩文件的文件名

OutFullName : 压缩文件的完整路径和文件名

Password : 压缩文件的密码. *为空是表示不加密码压缩

 

.在控制流上添加一个脚本任务.并双击进入脚本任务编辑器

(1)ReadOnlyVariables 里添加InFileFolder,InFileType,OutFileFolder,Password

(2)ReadWriteVariables里添加 OutExecuteCommand,OutFileName,OutFullName

(3)脚本语言选择 Visual Basic

    

(4)点击编辑脚本按钮.进入代码编辑器.

Main方法里添加如下代码

     Public Sub Main ()

        Dim InFileFolder, InFileType, OutFileName, OutFileFolder, OutExecuteCommand, Password, OutFullName As String

 

        Dim sYear, sMonth, sDay As String

        Dim FileDate As String

 

        InFileFolder = Dts.Variables("InFileFolder").Value.ToString

        InFileType = Dts.Variables("InFileType").Value.ToString

        OutFileFolder = Dts.Variables("OutFileFolder").Value.ToString

        Password = Dts.Variables("Password").Value.ToString

 

        sYear = Now.Year.ToString

        sMonth = Now.Month.ToString

        sDay = Now.Day.ToString

 

        If sMonth.Length < 2 Then sMonth = "0" & sMonth

        If sDay.Length < 2 Then sDay = "0" & sDay

 

        FileDate = sYear & sMonth & sDay

        OutFileName = "Archive" & FileDate & ".zip"

        OutFullName = OutFileFolder & OutFileName

 

        OutExecuteCommand = " a -tzip "

 

        If Password <> "" Then

            OutExecuteCommand += "-p""" & Password & """"

        End If

 

        OutExecuteCommand += " """ & OutFullName & """ """ & InFileFolder & "*." & InFileType & """"

 

        Dts.Variables("OutFileName").Value = OutFileName

        Dts.Variables("OutExecuteCommand").Value = OutExecuteCommand

        Dts.Variables("OutFullName").Value = OutFullName

 

         Dts.TaskResult = ScriptResults.Success

End Sub

 

(5)点击生成并保存退出

 

.添加一个执行进程任务,并将脚本任务的成功流拖往该执行进程任务.并双击进入执行进程任务编辑器.并设置如图:

(1)

   

   (2).进入表达式设置.Expressions里点击右边的对话按钮.并打开属性表达式编辑器.在属性里选择Arguments.并在表达式里选择OutExecuteCommand变量,如图

 

  (3) 确定返回

 

.在控制流里添加一个执行SQL任务.将执行进程任务的成功流拖往该执行SQL任务.并双击进入执行SQL任务编辑器

 

Connection里设置为一个连接SQL Server的连接管理器.SQLStatement里输入:

    exec msdb.dbo.sp_send_dbmail

      @profile_name='myfend',

      @recipients='myfend@hotmail.com',

      @subject='测试附件',

      @file_attachments=?

 在参数映射里添加一个参数.变量名选择OutFullName,方向为Input,数据类型为VARCHAR,参数名称为0,参数大小为1024

 

点击确定返回.

 

并按F5执行包

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值