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执行包