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方法里添加如下代码
VB.NET code
   
   
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里输入:
SQL code
   
   
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、付费专栏及课程。

余额充值