和其它程序一样,SSIS包同样需要健壮,稳定的运行,这样的程序才有可靠性和可伸缩性。SSIS提供了如下方面的支持:
1.事务: 可以对一个程序包设置成一个或者多个事务,甚至可以对两个程序包设置成一个事务。为了保证数据的一致性,你还可以DTC事务或者SQL Server引擎级的事务。
2.检查点: 用来记录一个程序包出错时任务的运行情况,以便程序包再次启动时,直接从发生错误的任务直接执行.
3.错误输出:即使再完美的程序也会有错误,尤其对于数据流中的任务来说,及有可能由于格式,类型等问题,导致这一行的发生错误。SSIS允许针对这样的每行进行错误输出处理,你可 以进行修复或者记录,当然你也可以忽略。&">nbsp;
4.优先约束:在控制流中,你不仅可以使用一个任务的成功,失败或执行结束作为条件来执行下面的任务,甚至可以使用表达式来做为条件。
5.事件处理: 在SSIS包中,事件处理是和控制流,数据流相并列的。在这里,你可以对程序包,任务或者容器的不同的事件进行处理,事件还可以用于设置断点并控制日志记录。我们可以使用OnError事件来捕获错误.
6.日志记录: 可以在运行时,记录指定的事件信息,可以保存在本地文本或者XML文件中,也可以保存到数据库中,或者是Windows EventLog,Profiler文件中,甚至你可以扩展自己的日志记录。
需求:
为了和其它系统集成,AdventureWorks系统的产品价格8206.html">实时更新,需要从一个指定的URL下载一个压缩文件,解压后,对这个数据文件进行分析导入。由于下载的文件是由一个非程序维护的文件,由于人为因素,里面的数据格式有可能有错误,但是要求忽略这样的数据。另外,如果处理失败,需要对保留历史文件。如果发生错误,需要发送错误Email.同时需要保留程序日志,以便查找错误原因。
实现:
1. 在你的D盘下面新建一个ProductPrice文件夹来存放压缩和数据文件,在下面新建一个bak目录存储备份文件。
2. 创建一个SSIS包,同时新建以下变量:
变更名类型值说明filePathStringD:\ProductPrice\数据根目录dataPathStringD:\ProductPrice\ProductList.txt解压后数据文件backPathString
@[User::filePath] + "bak\\" + (DT_WSTR, 4) YEAR( GETDATE() ) + "-" + (DT_WSTR, 2) MONTH( GETDATE() ) + "-" + (DT_WSTR, 2) DAY( GETDATE() ) + ".zip"
需要将EvaluateAsExpression设置为True
主要用于存储未执行成功的压缩数据文件,其名称为当前日期(由表达式计算出当前日期)
比如:D:\ProductPrice\bak\2009-9-20.zipWinRarStringC:\Program Files\WinRAR\WinRAR.exeWINRAR的安装目录zipPathStringD:\ProductPrice\Price.zipzip压缩文件下载路径erroCountInt320数据文件解析出错的行数
3.新建一个OLE DB连接,连接我们的AdventureWorks数据库.
4.新建一个Http连接,URL填写我们的远程的压缩文件的位置(当然,这里也可以使用变量).
当然,实际中这里可能需要使用凭据或者证书。